オブジェクトの配列に不明なプロパティ名を含むJSONスキーマが必要です。良い例は、Webページのメタデータです。
"meta": {
"type": "array",
"items": {
"type": "object",
"properties": {
"unknown-attribute-1": {
"type": "string"
},
"unknown-attribute-2": {
"type": "string"
},
...
}
}
}
何かアイデアをお願いします、または他の方法で同じものに到達しますか?
patternProperties
の代わりにproperties
を使用してください。以下の例では、パターンマッチの正規表現.*
は任意のプロパティ名を受け入れ、"additionalProperties": false
を使用することによってのみ、string
またはnull
のタイプを許可しています。
"patternProperties": {
"^.*$": {
"anyOf": [
{"type": "string"},
{"type": "null"}
]
}
},
"additionalProperties": false
明示的に定義されていないプロパティに制約を設定できます。次のスキーマは、「メタ」が、プロパティが文字列型のオブジェクトの配列になるように強制します。
{
"properties" : {
"meta" : {
"type" : "array",
"items" : {
"type" : "object",
"additionalProperties" : {
"type" : "string"
}
}
}
}
}
文字列の配列だけが必要な場合は、次のスキーマを使用できます。
{
"properties" : {
"meta" : {
"type" : "array",
"items" : {
"type" : "string"
}
}
}
}
@jruizarangurenの解決策は私にとってうまくいきます。スキーマを定義するのは私と同じですが、別のソリューションを選択しました
"meta": {
"type": "array",
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"value": {
"type": "string"
}
}
}
}
}
オブジェクトを名前と値のオブジェクトの配列に変換しました有効なJSONの例:
"meta": [
[
{
"name": "http-equiv",
"value": "Content-Type"
},
{
"name": "content",
"value": "text/html; charset=UTF-8"
}
],
[
{
"name": "name",
"value": "author"
},
{
"name": "content",
"value": "Astrid Florence Cassing"
}
]
]