所以我有一个json架构,在这个架构中,我在同一个json文件中引用另外两个架构,这很好。
{
"id": "http://ourdns.co.za/public/assets/json/formSchema.json",
"type": "object",
"properties": {
"person": {
"type": "object",
"id": "#person",
"properties": {
"first_name": {
"title": "What is your first name",
"type": "string"
},
"last_name": {
"title": "What is your last name",
"type": "string"
}
}
},
"person_api": {
"type": "object",
"id": "#person"
}
}
}
我想要的是一个根json模式,它引用了根目录外部的另外两个json模式。这与我当前的架构不同,我在一个文件中有所有架构(不理想)。有一个小问题,我无法使用$ref
作为参考关键字,因为我们正在使用does not support这个插件。但是我们发现id
可以用作引用关键字。(JsonForm是插件)。我们如何使用id
关键字获取这些内容,因为它似乎不起作用?
{
"id": "http://ourdns.co.za/public/assets/json/formSchema.json",
"type": "object",
"properties": {
"person_api": {
"type": "object",
"id": "public/assets/person.json"
}
}
}
1)我们如何在外部调用相同的数据,例如.. "id": "public/assets/person.json"
而不是将它们全部合并到一个文件中?
2)如果我们只需要person.json模式中的person.firstname
,我们如何检索特定属性?
{
"id": "http://dsn.co.za/public/assets/json/person.json",
"type": "object",
"properties": {
"first_name": {
"title": "What is your first name",
"type": "string"
}
}
}
答案 0 :(得分:6)
您无法单独使用id
执行引用。对于引用,您 使用$ref
。
id
关键字允许您提供架构的网址作为目标以供参考:
{
"id": "http://example.com/schemas/example",
"type": "object",
"properties": {
"arr1": {
"id": "#item-schema",
...
},
"arr2": {"$ref": "#item-schema"}
}
}
这样您就可以使用漂亮的URL(例如http://example.com/schemas/example#item-schema
)而不是使用JSON指针片段语法来引用模式。它还允许您重新组织架构(例如,将项目架构移动到definitions
)而不更改URL。
但是,对于引用本身,您仍然需要使用$ref
。如果您需要此功能,则需要在您使用的任何工具中支持它。