我有一个架构,其属性我必须在另一个架构中合并。假设以下是必须包含其属性的模式:
{"$schema": "http://json-schema.org/schema#",
"title": "native",
"type": "object",
"required": ["executable"],
"properties":
{
"job_name":
{
"type":"string",
"dname": "job name"
},
"executable":
{
"type":"string",
"dname":"server",
"description": "server name"
}
}}
包含上述架构的架构具有以下形式:
{"$schema": "http://json-schema.org/schema#",
"title": "application",
"type": "object",
"required": ["app_name"],
"properties":
{
"app_name":
{
"type":"string",
"dname": "app name"
}
}}
我想在第二个模式中合并第一个模式的属性,以便第二个模式看起来像:
{"$schema": "http://json-schema.org/schema#",
"title": "native",
"type": "object",
"required": ["executable","app_name"],
"properties":
{
"job_name":
{
"type":"string",
"dname": "job name"
},
"executable":
{
"type":"string",
"dname":"server",
"description": "server name"
}
"app_name":
{
"type":"string",
"dname": "app name"
}
}}
此外,"要求"字段被添加到第二个模式。 有可能吗?
答案 0 :(得分:1)
您无法合并架构,但可以使用XMLHttpRequest
要求文档针对这两个架构进行验证。它与合并不同,但它适用于您提交的案例。
allOf
答案 1 :(得分:0)
我可以使用'extends'关键字在另一个模式中扩展一个模式,如下所示:
在定义中的同一文件中定义第一个模式(我希望它也可以是另一个json模式文件)并在另一个模式中扩展它。
"definitions" : {
"argumentBaseType":{
"required": ["executable"],
"properties":
{
"job_name":
{
"type":"string",
"dname": "job name"
},
"executable":
{
"type":"string",
"dname":"server",
"description": "server name"
}
}
}
"properties":
{
{
Argument1 : {
"extends" : {
"$ref" : "#/definitions/argumentBaseType"
},
"app_name":
{
"type":"string",
"dname": "app name"
}
}}