如何在JSON模式中使用定义(draft-04)
我正在使用的其他服务响应类似于下面的示例,我只在这里包括3个字段,但还有更多:
{ "results": [ { "type": "Person", "name": "Mr Bean", "dateOfBirth": "14 Dec 1981" }, { "type": "Company", "name": "Pi", "tradingName": "Pi Engineering Limited" } ] }
我想为上面的(草稿-04)写一个JSON模式文件,它将明确指定:
if type == Person then list of required properties is ["type", "name", "dateOfBirth", etc] OR if type == "Company" then list of required properties is ["type", "name", "tradingName", etc]
但是,我无法find任何文件或例如如何做到这一点。
目前我的JSON模式如下所示:
{ "$schema": "http://json-schema.org/draft-04/schema", "type": "object", "required": ["results" ], "properties": { "results": { "type": "array", "items": { "type": "object", "required": ["type", "name"], "properties": { "type": { "type": "string" }, "name": { "type": "string" }, "dateOfBirth": { "type": "string" }, "tradingName": { "type": "string" } } } } } }
任何指针/我应该如何处理这个例子。
我认为推荐的方法是在Json-Schema web中示例的示例2。 您需要使用枚举来“按值”select模式。 在你的情况下,会是这样的:
{ "type": "object", "required": [ "results" ], "properties": { "results": { "type": "array", "items": { "oneOf": [ { "$ref": "#/definitions/person" }, { "$ref": "#/definitions/company" } ] } } }, "definitions": { "person": { "properties": { "type": { "enum": [ "person" ] }, "name": {"type": "string" }, "dateOfBirth": {"type":"string"} }, "required": [ "type", "name", "dateOfBirth" ], "additionalProperties": false }, "company": { "properties": { "type": { "enum": [ "company" ] }, . . . } } } }
抱歉,
我不明白这一点。 问题是关于“依赖关系”关键字是最后一个JSON模式规范的一部分,对吗?
我在接受的答案中找不到“依赖关系”(?)
在最后一稿中简要解释。 但是http://usingjsonschema.com在本书中解释了属性和定义的依赖关系:;
assets/UsingJsonSchema_20140814.pdf
从第29页开始(参见第30页解释)
"dependencies": { "shipTo":["shipAddress"], "loyaltyId":["loyaltyBonus"] }