배열의 항목 속성이 Json Schema에서 고유함을 확인하시겠습니까?
다음 JSON 스키마를 지정하면 "name" 속성이 고유해야 한다는 것을 나타낼 수 있습니까(즉, "elements" 배열에 동일한 "name"을 가진 항목이 두 개 있으면 안 됩니다).
{
"root": {
"type": "object",
"properties": {
"elements": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"title": "Element Name",
"minLength": 3,
},
"url": {
"type": "string",
"title": "Some URL"
}
}
}
}
}
}
}
unique Items 키워드를 사용하려고 했는데 단순한 값 목록을 위해 설계된 것 같습니다.
아니, 그건 불가능해.문서에서 json-schema:...JSON 데이터 구조를 정의하기 위한 JSON 기반 형식입니다.
이는 표준의 목적이 아니기 때문에 데이터 값 검증에는 상당히 제한적입니다."고유한 ID" 기능을 요청하는 것이 일반적이기 때문에 많은 사람들이 이전에 이것을 물어본 적이 있습니다.유감스럽게도 필요한 사람에게는 json-schema에서는 제공되지 않습니다.
따라서 고유성을 보장하려면 속성 값 대신 "이름"을 속성 키로 사용하는 것이 유일한 옵션입니다.
데이터 구조를 리팩터링하는 것이 옵션인 경우 다음과 같은 접근방식이 도움이 될 수 있습니다.
- 어레이를 맵으로 바꿉니다.이것은, 다음과 같은 오브젝트를 사용하는 것으로 간단하게 달성할 수 있습니다.
patternProperties
패턴은 정규 표현입니다.패턴과 일치하는 오브젝트는 모두 패턴속성의 스키마에 대해 검증됩니다.임의의 문자열 >= 3 문자와 일치하는 패턴은 다음과 같습니다."....*"
하지만 미행자가 있는 것 같아요".*"
항상 함축되어 있기 때문에"..."
동작합니다. - additional Properties: false는 제약조건을 적용하기 위한 추가 절차입니다(
minLength:3
). - 맵에서 하나 이상의 요소를 적용하려면(사용 중)
minItems:1
어레이의 경우)를 교환합니다.minItems
타고minProperties
.
...다음 스키마가 생성됩니다.
"root": {
"type": "object",
"properties": {
"elements": {
"type": "object",
"patternProperties": {
"...": {
"type": "object",
"properties": {
"url": {
"type": "string"
}
}
}
},
"additionalProperties": false,
"minProperties": 1
}
}
}
다음과 같은 문서(제외)가 이전 스키마와 일치하는 경우,
"elements": [
{
"name": "abc",
"url": "http://myurl1"
},
{
"name": "def",
"url": "http://myurl2"
},
{
"name": "ghij",
"url": "http://myurlx"
}
]
... 이와 같은 문서(해당)는 새 스키마와 일치합니다.
"elements": {
"abc": {
"url": "http://myurl1"
},
"def": {
"url": "http://myurl2"
},
"ghij": {
"url": "http://myurlx"
}
}
Ajv 검증자의 경우 사용자 지정 JSON-Schema 키워드 uniqueItemProperties: ajv-validator/ajv-keywords를 사용할 수 있습니다.
사용 사례에서 추가된 오버헤드를 처리할 수 있는 경우, 문서에 변환을 적용하여 축소된 문서를 생성한 후 축소된 문서에 별도의 미니 스키마를 사용하여 검증을 다시 적용할 수 있습니다.
다음은 Json 변환 툴에 대한 정보가 포함된 링크입니다.
JSONata에서는 예시를 다루는 것이 매우 간단합니다.
언급URL : https://stackoverflow.com/questions/24763759/make-sure-item-property-in-array-is-unique-in-json-schema
'programing' 카테고리의 다른 글
Wordpress 테마(get_search_form() 사용)에서 플레이스 홀더 텍스트를 검색 상자에 추가하려면 어떻게 해야 합니까? (0) | 2023.03.07 |
---|---|
Node.js에 포맷된 JSON 쓰기 (0) | 2023.03.07 |
Swift에서 JSON 문자열을 개체로 단순하고 깔끔하게 변환 (0) | 2023.03.07 |
Ajax 호출에서 워드프레스 함수를 사용하는 방법 (0) | 2023.03.07 |
반응 - 디버깅을 위해 DOM 요소에서 구성 요소를 가져옵니다. (0) | 2023.03.07 |