有没有办法使用JSON模式表达对同一JSON文档中的另一个元素的引用?标题可能有点令人困惑,但我没有找到引用另一个类型的"$ref"
属性,但我很好奇,如果有办法的话,使用指定的字段引用文档中的另一个元素。我知道这可以强制使用xsd for xml文档,不确定JSON。
我想做这样的事情:
{
"people": [
{ "id": "1", "name": "A" },
{ "id": "2", "name": "B" },
{ "id": "3", "name": "C" }
],
"chosenOne": "1" // I want the schema to enforce a person ID here
}
我一直在研究v4的模式定义:http://json-schema.org/draft-04/schema但是没有找到任何东西,看起来就像我想要做的那样。我错过了吗?
答案 0 :(得分:3)
您想要的是在架构描述的对象中描述引用($ ref)。
有点像这样
{
"people": []
"chosenOne": { $ref: "#1"}
}
(如果你想要Id(http://json-spec.readthedocs.org/en/latest/pointer.html)
的值,也可以是指针我知道没有直接的方法可以做到这一点,但您可以使用模式或oneof属性来强制它成为正确的值。有点像这样
"properties": {
"chosenOne"
"type": "string",
"oneOf": ["1","2","3"]
]
},
}
同样,您可以强制属性的值为参考模式。也就是说,因为没有参考值类型(http://www.tutorialspoint.com/json/json_data_types.htm)只有数字或字符串,所以不能保证值的含义。你可以保证如果遵循某种参考模式。
如果您需要的不仅仅是json架构可以提供的内容,您可能需要查看odata。 OData有一些额外的东西,所以你可以描述一个entitySet然后定义一个导航属性到该集合。 但它会强制您遵循odata结构,因此您不会像使用常规json架构那样自由。