【发布时间】:2013-08-22 08:41:36
【问题描述】:
我正在使用的其余服务响应类似于以下示例,我在这里只包含了 3 个字段,但还有更多:
{
"results": [
{
"type": "Person",
"name": "Mr Bean",
"dateOfBirth": "14 Dec 1981"
},
{
"type": "Company",
"name": "Pi",
"tradingName": "Pi Engineering Limited"
}
]
}
我想为上面(draft-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]
但是我找不到任何文档或如何做到这一点的示例。
目前我的 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" }
}
}
}
}
}
我应该如何处理的任何指针/示例。
【问题讨论】:
-
我认为您应该用继承来描述这一点:Person 类型扩展 MyObject,Company 类型扩展 MyObject,并在您的主模式中定义一个包含 MyObject 类型项目的数组
-
不知道 JSONSchema 与 XSD 有多么相似,但据我所知,关于 XSD,您的对象不需要通用超类。您宁愿在架构文件中继承。例如,您的主架构中的抽象占位符,这将允许人员架构和公司架构取代它。
-
我看到依赖项也在草稿 3 中。谁能解释草稿 3 和草稿 4 之间的依赖关系有何不同?
-
我认为 Bean 先生不是 81 年 12 月 14 日出生的。
标签: json jsonschema