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
map中的属性名称之一。 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":"^.*$"
}
}
}
}
}
I would like to create a schema where the value of a string property links to the name of a property in a different part of the JSON object. For example:
{
"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": ""
}
}
What I would like for the schema to enforce that the connectionString
value of the site to match one of the property names in the connectionStrings
map. Does JSON schema support a way to do this?
Here is my schema so far:
{
"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]quot;:{
"type":"object",
"required":[
"displayName",
"connectionString"
],
"properties":{
"displayName":{
"title":"Display Name",
"type":"string",
"default":"",
"examples":[
"Default"
],
"pattern":"^.*quot;
},
"connectionString":{
"title":"Connection String",
"type":"string",
"default":"",
"examples":[
"Site1"
],
"pattern":"^Site[d]quot;
}
}
}
}
},
"defaultSite":{
"$id":"#root/configuration/defaultSite",
"title":"Default Site",
"type":"string",
"default":"",
"examples":[
"Site1"
],
"pattern":"^Site[d]quot;
}
}
},
"conectionStrings":{
"$id":"#root/conectionStrings",
"title":"Conection Strings",
"type":"object",
"patternProperties":{
"^Site[d]quot;:{
"type":"string",
"default":"",
"examples":[
""
],
"pattern":"^.*quot;
}
}
}
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您不能使用JSON模式或盒子的盒子来执行此操作,但是我有一个扩展词汇为jsonschema.net实施: jsonschema.net.data 。
You can't do this with JSON Schema or of the box, but I have an extension vocabulary implemented for JsonSchema.Net: JsonSchema.Net.Data.