JSON 键具有不同名称的架构
JSON schema where keys have different names
{"57ecf565817bc3932d8de349": {
"prices": {
"2017-07-01": {
"summer": -1,
"winter": -1,
"xmas": -1},
"2017-08-05": {
"summer": -1,
"winter": -1,
"xmas": -1}
}
}
}
如何编写每个键都不同的 JSON 模式(此处:2017-07-01、2017-08-05)所以我不能像这样使用 items
示例 http://json-schema.org/example1.html#definitions(产品架构集)。
这是我的架构:
{
"type": "object",
"properties": {
"57ecf565817bc3932d8de349": {
"type": "object",
"properties": {
"prices": {
"type": "object",
"properties": {
"2017-07-01": {
"type": "object",
"properties": {
"summer": {
"type": "integer"
},
"winter": {
"type": "integer"
},
"xmas": {
"type": "integer"
}
},
"required": [
"summer",
"winter",
"xmas"
]
},
"2017-08-05": {
"type": "object",
"properties": {
"summer": {
"type": "integer"
},
"winter": {
"type": "integer"
},
"xmas": {
"type": "integer"
}
},
"required": [
"summer",
"winter",
"xmas"
]
}
},
"required": [
"2017-07-01",
"2017-08-05"
]
}
},
"required": [
"prices"
]
}
},
"required": [
"57ecf565817bc3932d8de349"
]
}
在我原来的 JSON 中,我有很多这样的日期:2017-07-01,我想避免为每个日期重复架构。
虽然接受了,但我的回答是不正确的。相反,请在此处查看 Jason 的回答:
您可以使用 additionalProperties
关键字来完成此操作。在此示例中,对象中的每个 属性 都必须针对给定的架构进行验证。
{
"type": "object",
"additionalProperties": {
"type": "object",
"properties": {
"summer": { "type": "integer" },
"winter": { "type": "integer" },
"xmas": { "type": "integer" }
},
"required": ["summer", "winter", "xmas"]
}
}
使用图案属性
https://json-schema.org/understanding-json-schema/reference/object.html#pattern-properties
类似
{
"type": "object",
"patternProperties": {
"^\d{4}-\d{2}-\d{2}": {
"type": "object",
"properties": {
"summer": {
"type": "integer"
},
"winter": {
"type": "integer"
etc...
{"57ecf565817bc3932d8de349": {
"prices": {
"2017-07-01": {
"summer": -1,
"winter": -1,
"xmas": -1},
"2017-08-05": {
"summer": -1,
"winter": -1,
"xmas": -1}
}
}
}
如何编写每个键都不同的 JSON 模式(此处:2017-07-01、2017-08-05)所以我不能像这样使用 items
示例 http://json-schema.org/example1.html#definitions(产品架构集)。
这是我的架构:
{
"type": "object",
"properties": {
"57ecf565817bc3932d8de349": {
"type": "object",
"properties": {
"prices": {
"type": "object",
"properties": {
"2017-07-01": {
"type": "object",
"properties": {
"summer": {
"type": "integer"
},
"winter": {
"type": "integer"
},
"xmas": {
"type": "integer"
}
},
"required": [
"summer",
"winter",
"xmas"
]
},
"2017-08-05": {
"type": "object",
"properties": {
"summer": {
"type": "integer"
},
"winter": {
"type": "integer"
},
"xmas": {
"type": "integer"
}
},
"required": [
"summer",
"winter",
"xmas"
]
}
},
"required": [
"2017-07-01",
"2017-08-05"
]
}
},
"required": [
"prices"
]
}
},
"required": [
"57ecf565817bc3932d8de349"
]
}
在我原来的 JSON 中,我有很多这样的日期:2017-07-01,我想避免为每个日期重复架构。
虽然接受了,但我的回答是不正确的。相反,请在此处查看 Jason 的回答:
您可以使用 additionalProperties
关键字来完成此操作。在此示例中,对象中的每个 属性 都必须针对给定的架构进行验证。
{
"type": "object",
"additionalProperties": {
"type": "object",
"properties": {
"summer": { "type": "integer" },
"winter": { "type": "integer" },
"xmas": { "type": "integer" }
},
"required": ["summer", "winter", "xmas"]
}
}
使用图案属性
https://json-schema.org/understanding-json-schema/reference/object.html#pattern-properties
类似
{
"type": "object",
"patternProperties": {
"^\d{4}-\d{2}-\d{2}": {
"type": "object",
"properties": {
"summer": {
"type": "integer"
},
"winter": {
"type": "integer"
etc...