JSONSchema如何定义动态对象的架构 [英] JSONSchema how to define a schema for a dynamic object
本文介绍了JSONSchema如何定义动态对象的架构的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我收到一个JSON响应,我正在尝试为其创建一个JSONSchema
{
"gauges": {
"foo": {
"value": 1234
},
"bar": {
"value": 12.44
}
}
}
重要的是要知道,关联数组gauges
中的对象是动态生成的,因此可以从零到多。gauges
中的每个对象都将始终具有value
属性,并且始终是一个数字。
因此这些都是有效的
示例1
{
"gauges": {
"foo": {
"value": 1234
}
}
}
示例2
{
"gauges": {
"dave": {
"value": 0.44
},
"tommy": {
"value": 12
},
"steve": {
"value": 99999
}
}
}
示例3
{
"gauges": {}
}
我已经查看了规范,如果这是一个数组,我知道我可以使用anyOf
,但我不确定如何做到这一点,或者它是否可能。
NB我无法更改JSON的格式
推荐答案
从概念上讲,您需要的是表示类型化映射的对象。
困难在于您没有用于将规范放入架构中的命名属性,但在这种情况下,您可以使用"addtionalProperties"
{
"type": "object",
"properties": {
"gauges": {
"type": "object",
"additionalProperties": {
"type": "object",
"properties": {
"value": {"type": "number"}
}
}
}
}
}
"Gauge"属性被定义为一个对象,在该对象中,每个"addtionalProperties"都将具有一个包含类型Number的值的类型。
注意:在Java中,您可以将其序列化为Map<String,Value>
,并赋值为包含值的类。(不知道其他类型的语言,但我愿意接受建议)
这篇关于JSONSchema如何定义动态对象的架构的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文