부울 값 목록의 유효성을 검사하는 데 문제가 있습니다.부울 값 목록에 대한 JSON 스키마의 XOR 논리
[true,true,false]
만 오직 하나의 진정한 가치로 나열되어 있기 때문에 진실해야한다,이를 확인하지한다 : 내 입력입니다. 순간 내 스키마가 모든 포함 또는 하나 개 이상의 진정한 가치를 수용하여 정렬을 수행하지만 : 당신이 볼 수 있듯이
{
"type": "array",
"items": {
"$ref": "#/definitions/_items"
},
"$ref": "#/definitions/xor",
"definitions": {
"xor": {
"oneOf": [
{
"$ref": "#/definitions/or"
},
{
"$ref": "#/definitions/and"
}
]
},
"_items": {
"enum": [
true,
1
]
},
"or": {
"not": {
"type": "array",
"items": {
"not": {
"$ref": "#/definitions/_items",
"maximum": 1,
"minimum": 1
}
}
}
},
"and": {
"type": "array",
"items": {
"$ref": "#/definitions/_items"
}
}
}
}
, 나는 최대를 해결하기 위해 노력하고 최소한의 속성이지만 결과에 영향을 미치지는 않습니다.
한 진실 테이블이 제대로 될 것이다 :
[true,true,false]
=> 거짓
[true,true,true]
=> 거짓
[true,false,false]
=> 진정한
[false,false,false]
=> 거짓
[false,true,false]
=> true
[false,false,true]
=> 진정한
[true,false,true]
=> 거짓
[false,true,true]
=> 거짓
실제로 프로그래밍 방식으로 스키마를 작성하기 때문에 어느 시점에서는 그렇게 생각하고있었습니다. 조언을 주셔서 감사합니다. – MarkokraM
JSON Schema는이를 표현할 수 없다는 점에 동의하지만이 방법은 배열을 열거 형으로 사용하여 훨씬 간단하게 수행 할 수 있습니다. '{ "enum": [[true, false, false], [false, true, false], [false, false, true]]}'. 그러나 부울을 사용하기 때문에이 짧은 표기법으로 만 벗어날 수 있습니다. – Jason