임의의 키에 대해 JSON Schema를 어떻게 설계하시겠습니까?
다음의 JSON 출력 데이터가 있습니다.
{
"label_name_0" : 0,
"label_name_5" : 3,
.
.
.
"label_name_XXX" : 4
}
출력은 단순합니다.정수값과 관련된 키[1] 이름입니다.키 이름이 변경되지 않으면 다음과 같은 JSON Schema를 쉽게 만들 수 있습니다.
{
"type": "array"
"title": "Data output",
"items" :{
"properties": {
"label_name": {
"type": "integer",
"default": 0,
"readonly": True,
}
}
},
키 이름 자체를 알 수 없고 계속 바뀌기 때문에 키 이름을 위한 스키마를 설계해야 합니다.내가 아는 건 열쇠가string
100자 이내여야 합니다.키의 JSON 스키마를 정의하려면 어떻게 해야 합니까?lable_name_xxx
계속 변해요.
[1] 올바른 용어를 사용하고 있는지 확실하지 않다
json-schema.org 에서는, 「파일 시스템의 예」섹션에 적절한 정보가 기재되어 있습니다.정의할 수 있습니다.patternProperties
안쪽에서object
.
{
"type": "object",
"properties": {
"/": {}
},
"patternProperties": {
"^(label_name_[0-9]+)+$": { "type": "integer" }
},
"additionalProperties": false,
}
정규 표현(label_name_[0-9]+)+
니즈에 맞을거야.JSON Schema에서는 정규 표현은 다음과 같이 명시적으로 고정됩니다.^
그리고.$
. 정규 표현에서는 적어도1개의 속성이 있어야 한다고 정의하고 있습니다.+
) 속성은 다음과 같이 구성됩니다.label_name_
사이의 숫자0
그리고.9
단, 적어도 1개의 번호가 있어야 합니다.([0-9]+)
, 그러나 그들 중 많은 수가 임의로 존재할 수도 있습니다.
설정별additionalProperties
로.false
오브젝트 속성을 정규 표현과 일치하도록 제한합니다.
Konrad의 답변대로patternProperties
. 단,properties
필요없고, Konrad는 다음에서 시작하는 경로를 예상한 참조 예에서 붙여넣은 것 같습니다./
다음 예제에서는 패턴이 일치합니다.regex .*
모든 속성 이름을 허용하며 문자열 또는 null 유형을 허용하려면"additionalProperties": false
.
"patternProperties": {
"^.*$": {
"anyOf": [
{"type": "string"},
{"type": "null"}
]
}
},
"additionalProperties": false
OP에는 키 이름(문서)에 대한 요구사항이 없으므로 patternProperties보다 간단한 솔루션:
{
"type": "object",
"additionalProperties": {
"type": "integer",
"default": 0,
"readonly": true,
}
}
default
그리고.readonly
OP의 초기 제안에 포함되었지만 필수는 아니기 때문에 포함되었습니다.
언급URL : https://stackoverflow.com/questions/16222633/how-would-you-design-json-schema-for-an-arbitrary-key
'programing' 카테고리의 다른 글
Oracle: 보류 중인 트랜잭션이 있는지 확인하려면 어떻게 해야 합니까? (0) | 2023.03.22 |
---|---|
리액트 컴포넌트에 대해 es6 Import alias 구문을 사용할 수 있습니까? (0) | 2023.03.22 |
MongoDB에서 현재 사용하고 있는 DB를 표시하는 명령어? (0) | 2023.03.22 |
MongoDB에서 동등한 SQL Join을 실행하려면 어떻게 해야 합니까? (0) | 2023.03.22 |
ORA-00904: 잘못된 식별자 (0) | 2023.03.22 |