json 动态数组的架构
json schema for dynamic array
我有以下 json
{
"Dettype": "QTY",
"Details": [
{
"12568": {
"Id": 12568,
"qty":1,
"Freq":"2",
"Option": 0,
"promote":"yes"
},
"22456": {
"Id": 22456,
"qty":2,
"Freq":"3",
"Option": 1,
"promote":"no"
}
}
]
}
对于上述 json 我需要编写一个 json 模式文件来验证请求。
但问题在于数组中每个项目的键值动态变化。如果它是某个常数值我可以写但不知道如何做动态模式
JSON 我得到的架构
{
"type": "object",
"additionalProperties": true,
"properties": {
"Dettype": {
"type": "string"
},
"Details": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true,
"properties": {
"**DYNAMIC VALUE**": {
"type": "object",
"additionalProperties": true,
"properties": {
"Id": {
"type": "integer"
},
"qty": {
"type": "integer"
},
"Freq": {
"type": "string"
},
"Option": {
"type": "integer"
},
"promote": {
"type": "string"
}
}
}
}
}
}
}
}
谁能告诉我需要对架构进行哪些更改
这就是 patternProperties
的用途。
这里好像你的对象成员键总是数字;因此你可以这样写:
"type": "object",
"patternProperties": {
"^\d+$": {
"type": "object",
"etc": "etc"
}
}
如果您希望所有属性都匹配某个模式,您还可以使用 additionalProperties:
{
"type": "object",
"additionalProperties": {
"type": "object",
"etc": "etc"
}
}
我有以下 json
{
"Dettype": "QTY",
"Details": [
{
"12568": {
"Id": 12568,
"qty":1,
"Freq":"2",
"Option": 0,
"promote":"yes"
},
"22456": {
"Id": 22456,
"qty":2,
"Freq":"3",
"Option": 1,
"promote":"no"
}
}
]
}
对于上述 json 我需要编写一个 json 模式文件来验证请求。
但问题在于数组中每个项目的键值动态变化。如果它是某个常数值我可以写但不知道如何做动态模式
JSON 我得到的架构
{
"type": "object",
"additionalProperties": true,
"properties": {
"Dettype": {
"type": "string"
},
"Details": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true,
"properties": {
"**DYNAMIC VALUE**": {
"type": "object",
"additionalProperties": true,
"properties": {
"Id": {
"type": "integer"
},
"qty": {
"type": "integer"
},
"Freq": {
"type": "string"
},
"Option": {
"type": "integer"
},
"promote": {
"type": "string"
}
}
}
}
}
}
}
}
谁能告诉我需要对架构进行哪些更改
这就是 patternProperties
的用途。
这里好像你的对象成员键总是数字;因此你可以这样写:
"type": "object",
"patternProperties": {
"^\d+$": {
"type": "object",
"etc": "etc"
}
}
如果您希望所有属性都匹配某个模式,您还可以使用 additionalProperties:
{
"type": "object",
"additionalProperties": {
"type": "object",
"etc": "etc"
}
}