programing

임의의 키에 대해 JSON Schema를 어떻게 설계하시겠습니까?

muds 2023. 3. 22. 22:16
반응형

임의의 키에 대해 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,
            }
        }
    },

키 이름 자체를 알 수 없고 계속 바뀌기 때문에 키 이름을 위한 스키마를 설계해야 합니다.내가 아는 건 열쇠가string100자 이내여야 합니다.키의 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그리고.readonlyOP의 초기 제안에 포함되었지만 필수는 아니기 때문에 포함되었습니다.

언급URL : https://stackoverflow.com/questions/16222633/how-would-you-design-json-schema-for-an-arbitrary-key

반응형