【发布时间】:2022-02-08 01:00:39
【问题描述】:
我有以下 JSON 架构
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "array",
"items": {
"type": "object",
"properties": {
"op": {
"type": "string",
"minLength": 1,
"enum": [
"add",
"remove",
"replace"
]
},
"path": {
"type": "string",
"minLength": 1,
"enum": [
"/name",
"/description",
"/prefix"
]
},
"value": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false,
"required": [
"op",
"path",
"value"
],
"minItems": 1,
"allOf": [
{
"if" : {
"properties": {
"path" : {
"const": "/name"
}
}
},
"then": {
"properties": {
"op": {
"const": "replace"
}
}
}
},
{
"if" : {
"properties": {
"path" : {
"const": "/description"
}
}
},
"then": {
"properties": {
"op": {
"const": "replace"
}
}
}
}
]
}
}
如上我们可以看到,如果名称和描述存在,那么 op 将被替换,对于路径前缀,我拥有所有操作,即添加、删除和替换,但我希望为删除操作应用一个特殊条件 就像如果 path 是 xFix 并且 op 被删除,那么所需的参数不应该包含 value 属性,所以只有 op 和 path。
【问题讨论】:
-
您能否提供一些应该通过验证的 JSON 数据示例和一些验证失败的 JSON 数据示例?并解释哪些没有按照您的预期进行验证(以及为什么)?
标签: node.js json jsonschema