JSON模式是否支持在单独的对象中从列表中选择字符串?



我想创建一个模式,其中字符串属性的值链接到JSON对象的不同部分的属性的名称。例如:

{
"configuration": {
"sites": {
"Site1": {
"displayName": "Default Site",
"connectionString": "Site1"
},
"Site2": {
"displayName": "Site 2",
"connectionString": "Site3"
},
"Site3": {
"displayName": "Site 3",
"connectionString": "Site3"
}
},
"defaultSite": "GENBuild"
},
"conectionStrings": {
"Site1": "",
"Site2": "",
"Site3": ""
}
}

我想让模式强制站点的connectionString值匹配connectionStrings映射中的一个属性名。JSON模式是否支持这样做?

这是我目前的模式:

{
"definitions":{

},
"$schema":"http://json-schema.org/draft-07/schema#",
"$id":"https://example.com/object1657140793.json",
"title":"Root",
"type":"object",
"required":[
"configuration",
"conectionStrings"
],
"properties":{
"configuration":{
"$id":"#root/configuration",
"title":"Configuration",
"type":"object",
"required":[
"sites",
"defaultSite"
],
"properties":{
"sites":{
"$id":"#root/configuration/sites",
"title":"Sites",
"type":"object",
"patternProperties":{
"^Site[d]$":{
"type":"object",
"required":[
"displayName",
"connectionString"
],
"properties":{
"displayName":{
"title":"Display Name",
"type":"string",
"default":"",
"examples":[
"Default"
],
"pattern":"^.*$"
},
"connectionString":{
"title":"Connection String",
"type":"string",
"default":"",
"examples":[
"Site1"
],
"pattern":"^Site[d]$"
}
}
}
}
},
"defaultSite":{
"$id":"#root/configuration/defaultSite",
"title":"Default Site",
"type":"string",
"default":"",
"examples":[
"Site1"
],
"pattern":"^Site[d]$"
}
}
},
"conectionStrings":{
"$id":"#root/conectionStrings",
"title":"Conection Strings",
"type":"object",
"patternProperties":{
"^Site[d]$":{
"type":"string",
"default":"",
"examples":[
""
],
"pattern":"^.*$"
}
}
}
}
}

您不能使用JSON Schema或of the box这样做,但是我有一个为JsonSchema实现的扩展词汇表。净:JsonSchema.Net.Data。

最新更新