如何编写json模式来强制其他属性的条件存在?
模式应该验证以下json对象,并且不允许任何附加属性如何编写json模式来强制其他属性的条件存在?,json,jsonschema,json-schema-validator,Json,Jsonschema,Json Schema Validator,模式应该验证以下json对象,并且不允许任何附加属性 { "id": "11111111111111111111111111111111", "status": "employed", "company_name": "Google" } { "id": "00000000000000000000000000000000", "status": "unemployed" } 模式草案v4: { "type": "object", "additionalProper
{
"id": "11111111111111111111111111111111",
"status": "employed",
"company_name": "Google"
}
{
"id": "00000000000000000000000000000000",
"status": "unemployed"
}
模式草案v4:
{
"type": "object",
"additionalProperties":false,
"required": [
"status",
"id"
],
"properties": {
"id": {
"type": "string"
},
"status": {
"type": "string",
"enum":["unemployed", "employed"]
},
"company_name": {
"type": "string"
}
},
"dependencies": {
"company_name": {
"properties": {
"status": {
"enum": [
"employed"
]
}
}
}
}
}
此模式看起来不错,但不会使以下json对象无效
{
"id": "00000000000000000000000000000001",
"status": "employed"
}
它应该无效,因为“状态”为“已雇用”,但未提供所需的属性“公司名称”。这可以使用,但不确定如何使用
多亏了。看@esp那边不清楚。。请你详细说明一下好吗。根据我的观察:我用的是最后一个(最好的):)我有什么不对劲吗missing@esp我补充了一个答案。请为如何使用依赖项添加另一个答案。我认为这是不可能的。它要么是任意的,要么是有条件的
{
"type": "object",
"additionalProperties": false,
"required": [
"status",
"id"
],
"properties": {
"id": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"unemployed",
"employed"
]
},
"company_name": {
"type": "string"
}
},
"anyOf": [
{
"properties": {
"status": {
"enum": [
"employed"
]
}
},
"required": [
"company_name"
]
},
{
"properties": {
"status": {
"enum": [
"unemployed"
]
}
},
"not": {
"required": [
"company_name"
]
}
}
]
}