필요합니다 : "A"가 될 수jsonschema 검증 조건부 나는 항상 2 개 개의 호텔이 JSON 개체의 유효성을 검사 할 필요가
- 유형
- 이름
유형을, "B"또는 "C",
유형이 "A"인 경우 속성 "foo"가 필요하며 추가 속성이 허용되지 않습니다.
는 OK :
{
"type": "A",
"name": "a",
"foo": "a",
}
확인하지 않음 :
{
"type": "A",
"name": "a",
"foo": "a",
"lol": "a"
}
타입이 "B"입니다
는 필요한 재산 "바"와 추가 속성을 사용할 수 있습니다.유형이 "C"이고 속성 "bar"가 필요하며 선택적으로 "zen"속성도있을 수 있습니다.
OK :
{
"type": "C",
"name": "a",
"bar": "a",
"zen": "a"
}
{
"type": "C",
"name": "a",
"bar": "a",
}
확인하지 않음 :
{
"type": "C",
"name": "a",
"bar": "a",
"lol": "a"
}
불행하게도이 question에 뛰어난 답이 부분적으로 내 경우를 포함, 그러나 나는 나를 위해 작동하는 jsonschema을 구축하는 것을 처리하지 않았다.
편집 :
다음은 내가 시도한 것입니다.
{
"$schema": "http://json-schema.org/draft-04/schema",
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": ["A", "B", "C"]
},
"name": {"type": "string"},
"foo": {"type": "string"},
"bar": {"type": "string"},
"zen": {"type": "string"},
},
"anyOf": [
{
"properties": {"type": {"enum": ["A"]}},
"required": ["foo"],
},
{
"properties": {"type": {"enum": ["B"]}},
"required": ["bar"],
},
{
"properties": {"type": {"enum": ["C"]}},
"required": ["bar"],
},
]
}
내 문제는 "실행 하는가"의 개체 내부 false로 필드 "additionalProperties"로 설정 나에게 예상되는 결과를 제공하지 않습니다. 는 추가 속성 "LOL"
{
"type": "A",
"name": "a",
"foo": "a",
"lol": "a"
}
필자가 시도한 예제와이 솔루션이 저에게 맞지 않는 이유를 포함하여 게시물을 업데이트했습니다. – cunfusu