次のJSON出力データがあります。
{
"label_name_0" : 0,
"label_name_5" : 3,
.
.
.
"label_name_XXX" : 4
}
出力は単純です。整数値に関連付けられたkey [1]名です。キー名が変更されない場合は、次のようなJSONスキーマを簡単に思い付くことができます。
{
"type": "array"
"title": "Data output",
"items" :{
"properties": {
"label_name": {
"type": "integer",
"default": 0,
"readonly": True,
}
}
},
キー名自体は不明であり、変更され続けるため、スキーマを設計する必要があります。私が知っている唯一のことは、キーはstring
であり、100文字以下であるということです。キーのJSONスキーマを定義するにはどうすればよいですかlable_name_xxx
それは変化し続けます。
[1]正しい用語を使用しているかどうかわからない
Json-schema.orgでは、 高度な例 セクションに適切なものがあります。 patternProperties
内にobject
を定義できます。
{
"type": "object",
"properties": {
"/": {}
},
"patternProperties": {
"^(label_name_[0-9]+)+$": { "type": "integer" }
},
"additionalProperties": false,
}
正規表現(label_name_[0-9]+)+
はニーズに合うはずです。 JSONスキーマでは、正規表現は^
および$
で明示的に固定されています。正規表現は、少なくとも1つのプロパティ(+
)が必要であることを定義しています。プロパティは、label_name_
と0
から9
までの数字で構成されますが、少なくとも1つの数字([0-9]+)
が必要ですが、任意の数にすることもできます。
additionalProperties
をfalse
に設定すると、オブジェクトのプロパティが正規表現に一致するように制約されます。
Konradの回答が述べているように、patternProperties
を使用します。ただし、不要なproperties
の代わりに使用してください。コンラッドは、/
で始まるパスを期待していた参照例から貼り付けたばかりだと思います。以下の例では、パターンマッチregex .*
は任意のプロパティ名を受け入れ、"additionalProperties": false
を使用することによってのみ文字列またはnullのタイプを許可しています。
"patternProperties": {
"^.*$": {
"anyOf": [
{"type": "string"},
{"type": "null"}
]
}
},
"additionalProperties": false