"깨진 참조"의 사례를 찾기 위해 JSON 스키마를 사용하여 JSON 파일의 유효성을 검사하려고합니다. 기본적으로 내 파일이 각 항목과 같이, 그룹의 속성 키가 참조 하나의 그룹에 속하는 항목 및 그룹 구성개체 속성 키를 JSON 스키마의 열거 형으로 사용
{
"items": {
"banana": {
"name": "Banana",
"group": "fruits"
},
"apple": {
"name": "Apple",
"group": "fruits"
},
"carrot": {
"name": "Carrot",
"group": "vegetables"
},
"potato": {
"name": "Potato",
"group": "vegetables"
},
"cheese": {
"name": "Cheese",
"group": "dairy"
}
},
"groups": {
"fruits": {
"name": "Fruits"
},
"vegetables": {
"name": "Vegetables"
}
}
}
을 예에서 항목 cheese
이상은 있기 때문에, 유효하지 않은 것으로 간주되어야한다 groups
개체의 no dairy
속성 나는이 다음 스키마 사용하여 유효성을 시도했다 : 이것은 group
에 대한 enum
이 groups
에서 속성 값으로 채워집니다 효과가있다
{
"$schema": "http://json-schema.org/draft-06/schema#",
"title": "Food",
"id": "food",
"type": "object",
"properties": {
"items": {
"type": "object",
"patternProperties": {
"^[A-Za-z0-9-_.:=]+$": {
"properties": {
"name": {
"type": "string",
"pattern": "^[A-Za-z- ]+$"
},
"group": {
"pattern": "^[a-z]+$",
"enum": {
"$data": "/groups"
}
}
}
}
}
},
"groups": {
"type": "object",
"patternProperties": {
"^[A-Za-z0-9-_]+$": {
"properties": {
"name": {
"type": "string",
"pattern": "^[A-Za-z- ]+$"
}
}
}
}
}
},
"additionalProperties": false
}
,하지만 내가하고 싶은 것은 재산을 키를 사용하다 groups
에 정의되어 있습니다.
예를 들면 다음과 같은 속성을 추가하면 groupIds
그리고 그것이 groups
에있는 모든 속성 키의 배열이고 enum을 "$data": "/groupIds"
으로 지정하면 JSON 포인터 문제가됩니다.
키워드의 값은 배열해야로서
JSON 스키마에
정의된다. 이 배열은 최소한 하나의 요소를 가져야한다 (SHOULD). 배열의 요소는 고유해야합니다 (SHOULD).enum
키워드
그래서 개체 값을 참조하는 대신 JSON 포인터 만 가져올 수 있다면 enum 유효성 검사가 작동하는 것 같습니다. 나는 "$data": "/groups/.keys"
, "$data": "/groups/$keys"
또는 그와 비슷한 것을 생각하고 있지만 검색 중이거나 사양을 읽는 동안 찾지 못했습니다. 그런 것이 있습니까? 아니면 지금까지 제안 된 적이 있습니까?