Javascript 如何在json模式中定义替代结构
我得到的JSON文件可以如下所示:Javascript 如何在json模式中定义替代结构,javascript,json,jsonschema,Javascript,Json,Jsonschema,我得到的JSON文件可以如下所示: { "api": "http://my.api.host", "modules": [ "core", "module", "another" ] } 或者这个: { "api": "http://my.api.host", "modules": "*" } 请注意,模块属性的值可以是数组,也可以是*字符串。我如何在JSON模式中做到这一点?我使用priceless创建了以下仅验证阵列的结构: {
{
"api": "http://my.api.host",
"modules": [
"core", "module", "another"
]
}
或者这个:
{
"api": "http://my.api.host",
"modules": "*"
}
请注意,模块
属性的值可以是数组,也可以是*
字符串。我如何在JSON模式中做到这一点?我使用priceless创建了以下仅验证阵列的结构:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"id": "http://jsonschema.net",
"type": "object",
"additionalProperties": true,
"properties": {
"api": {
"id": "http://jsonschema.net/api",
"type": "string",
"minLength": 1
},
"modules": {
"id": "http://jsonschema.net/modules",
"type": "array",
"minItems": 1,
"uniqueItems": false,
"additionalItems": true,
"items": {
"id": "http://jsonschema.net/modules/2",
"type": "string",
"minLength": 1
}
}
},
"required": [
"api",
"modules"
]
}
我如何在JSON模式中做出选择?我已经找到了答案,基于另一个(略有不同)。解决方案是使用它来定义至少一个必须匹配的备选子模式。我的案例的一个示例解决方案是:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"id": "http://jsonschema.net",
"type": "object",
"additionalProperties": true,
"properties": {
"api": {
"id": "http://jsonschema.net/api",
"type": "string",
"minLength": 1
},
"modules": {
"id": "http://jsonschema.net/modules",
"anyOf": [{
"type": "array",
"minItems": 1,
"uniqueItems": true,
"items": {
"id": "http://jsonschema.net/modules/2",
"type": "string",
"minLength": 1
}
}, {
"type": "string",
"minLength": 1
}]
}
},
"required": [
"api",
"modules"
]
}