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