我有一个JSON响应,我正在尝试为其创建一个JSONSchema
{
"gauges": {
"foo": {
"value": 1234
},
"bar": {
"value": 12.44
}
}
}
Run Code Online (Sandbox Code Playgroud)
重要的是要知道关联数组gauges中的对象是动态生成的,因此可以有零到多个.每个对象都gauges将具有一个value属性,它始终是一个数字.
所以这些都是有效的
{
"gauges": {
"foo": {
"value": 1234
}
}
}
Run Code Online (Sandbox Code Playgroud)
{
"gauges": {
"dave": {
"value": 0.44
},
"tommy": {
"value": 12
},
"steve": {
"value": 99999
}
}
}
Run Code Online (Sandbox Code Playgroud)
{
"gauges": {}
}
Run Code Online (Sandbox Code Playgroud)
我看过规范,如果这是一个我知道我可以使用的数组,anyOf但我不确定如何做到这一点,或者甚至可能.
注意我无法更改JSON的格式
从概念上讲,您想要的是一个代表类型化地图的对象。
困难之处在于您没有命名属性可将规范放入架构中,但在这种情况下,您可以使用“ additionalProperties”
{
"type": "object",
"properties": {
"gauges": {
"type": "object",
"additionalProperties": {
"type": "object",
"properties": {
"value": {"type": "number"}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
“ gauges”属性定义为一个对象,其中的每个“ additionalProperties”都将具有一个包含数字类型值的类型。
注意:在Java中,您可以使用Map<String,Value>包含值的类将其序列化为Value。(不知道其他类型的语言,但我愿意接受建议)
这个答案指向一个模拟解决方案。 如何为Map <String,Integer>定义JSON模式?