我在处理json模式时遇到了一些困难。
假设这是初始的简单json。
[
{
"Field1": 1,
"Description": "Default"
},
{
"Field1": 77,
"Description": "NonDefault"
}
]
这是写的模式,是有效的
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "array",
"items": {
"type": "object",
"properties": {
"Field1": {
"type": "integer"
},
"Description": {
"type": "string"
}
}
}
}
我想改变Json,用";字段1";作为关键。"字段1";是整数值。我不知道值,也不知道json中会有多少Field1。
这是最终的JSON
{
"1": {
"Description": "Default"
},
"77": {
"Description": "NonDefault"
}
}
但是如何为这个json编写json模式呢?
TimRoberts的答案就在那里。您想要的是描述patternProperties
子模式中的项目,类似于示例模式中的items
。
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"patternProperties": {
"^[0-9]*$": {
"type": "object",
"properties": {
"Description": { "type": "string" }
}
}
}
}
您可以使用;propertyNames"用一个";图案";元素来创建一个正则表达式来限定密钥名称,而不是全部枚举它们。I、 就个人而言,更喜欢你的第一种布局。
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"patternProperties": {
"^[0-9]*$": { "type": "string" }
}
}