JSON 没有 "properties" 关键字的模式
JSON schema without "properties" keyword
供应商向我发送 json 架构。请看这个:
{
"$schema" : "http://json-schema.org/draft-04/schema#",
"type" : "object",
"definitions" : {
...
},
"oneOf" : [{
"$ref" : "#/definitions/commons/strings/text"
}, {
"$ref" : "#/definitions/dto/scriptStep"
}, {
"$ref" : "#/definitions/dto/callResult"
}
]
}
没有 "properties" 关键字(但顺便说一句,有很大的 "definitions" 部分)。这是否意味着模式实际上描述了空 json 对象 {}?或者这是否意味着 json 可以包含 "oneOf" 数组中的元素之一?
所有 JSON 模式关键字都是约束。例如,空模式 {}
表示任何 JSON 都是有效的。只有 `{ "type": "object" } 的模式意味着任何 JSON 对象都是有效的。对象具有的属性没有限制。
但是,这不是您的供应商在此架构中表达的内容。 JSON 不仅必须对 "type": "object"
有效,而且对 oneOf
中引用的三个模式之一也有效。据推测,这些模式包含一个 properties
关键字。
这可能不是设计最好的架构,但它是有效的。
供应商向我发送 json 架构。请看这个:
{
"$schema" : "http://json-schema.org/draft-04/schema#",
"type" : "object",
"definitions" : {
...
},
"oneOf" : [{
"$ref" : "#/definitions/commons/strings/text"
}, {
"$ref" : "#/definitions/dto/scriptStep"
}, {
"$ref" : "#/definitions/dto/callResult"
}
]
}
没有 "properties" 关键字(但顺便说一句,有很大的 "definitions" 部分)。这是否意味着模式实际上描述了空 json 对象 {}?或者这是否意味着 json 可以包含 "oneOf" 数组中的元素之一?
所有 JSON 模式关键字都是约束。例如,空模式 {}
表示任何 JSON 都是有效的。只有 `{ "type": "object" } 的模式意味着任何 JSON 对象都是有效的。对象具有的属性没有限制。
但是,这不是您的供应商在此架构中表达的内容。 JSON 不仅必须对 "type": "object"
有效,而且对 oneOf
中引用的三个模式之一也有效。据推测,这些模式包含一个 properties
关键字。
这可能不是设计最好的架构,但它是有效的。