【发布时间】:2021-08-31 20:25:37
【问题描述】:
我很难理解是否可以编写需要某些属性的 json 模式,但也允许这些属性位于 json 文件的不同区域(例如,属性值可以位于主顶级对象中或它可以在一个数组中——它只需要在某个地方)。
例如,我有一些设备会在几个小时内收集多个温度记录并分批发送记录。但是,有些设备会在主对象中发送一次软件版本,而其他设备会随每个小时的温度记录一起发送软件版本(在“records”数组中)。
示例 1(swversion 在主对象中发送一次):
{
"name": "device1",
"swversion": "1.3.abc2",
"records": [
{
"time": "10am",
"temp": 2
},
{
"time": "11am",
"temp": 4
}
]
}
示例 2(swversion 在“记录”数组中发送):
{
"name": "device1",
"records": [
{
"time": "10am",
"temp": 2,
"swversion": "1.3.abc2"
},
{
"time": "11am",
"temp": 4,
"swversion": "1.3.abc2"
}
]
}
使用这些示例,我想将我的架构定义编写如下(前两个项目符号很简单,最后一个项目符号是我苦苦挣扎的地方):
- 主对象需要
name属性和records数组 -
records数组可以包含需要time和temp的对象 -
swversion是必需的某处(可以在主对象中或在records数组中)
我在 json-schema 中是否缺少一个强制必需属性的功能,但允许所述属性的灵活性任何地方(例如,在对象或数组中),只要他们在某处吗?
【问题讨论】:
标签: json jsonschema json-schema-validator