programing

객체 배열에 대한 JSON 스키마 정의

muds 2023. 3. 27. 21:43
반응형

객체 배열에 대한 JSON 스키마 정의

다른 질문도 봤지만, 전혀 같지 않고, 내 문제가 더 간단하다고 느껴지지만, 그냥 잘 되지 않습니다.

데이터는 다음과 같습니다.

[
    { "loc": "a value 1", "toll" : null, "message" : "message is sometimes null"},
    { "loc": "a value 2", "toll" : "toll is sometimes null", "message" : null}
]

Node.js 프로젝트에서 JSON 검증을 위해 AJV를 사용하고 싶은데 데이터를 설명하기 위해 여러 스키마를 시도했지만 항상 다음과 같은 오류가 발생합니다.

[ { keyword: 'type',
    dataPath: '',
    schemaPath: '#/type',
    params: { type: 'array' },
    message: 'should be array' } ]

제가 시도한 스키마는 다음과 같습니다.

{
  "type": "array",
  "items": {
    "type": "object",
    "properties": {
      "loc": {
        "type": "string"
      },
      "toll": {
        "type": "string"
      },
      "message": {
        "type": "string"
      }
    },
    "required": [
      "loc"
    ]
  }
}

또한 이 온라인 도구를 사용하여 스키마를 생성하려고 시도했지만, 이것도 작동하지 않습니다.또한 올바른 결과를 출력할 수 있는지 확인하기 위해 해당 출력을 jsonschemavalidator.net에 대해 검증하려고 시도했지만, 이 경우에도 유사한 오류가 발생합니다.

Found 1 error(s)
 Message:
 Invalid type. Expected Array but got Object.
 Schema path:
 #/type

스키마를 올바르게 정의했지만 검증 중인 데이터와 일치하지 않습니다.스키마와 일치하도록 속성 이름을 변경해도 여전히 한 가지 문제가 발생합니다."toll" 및 "message"를 null로 허용하려면 다음을 수행합니다.

{
  "type": "array",
  "items": {
    "type": "object",
    "properties": {
      "loc": {
        "type": "string"
      },
      "toll": {
        "type": ["string", "null"]
      },
      "message": {
        "type": ["string", "null"]
      }
    },
    "required": [
      "loc"
    ]
  }
}

단, 이것은 에러 메시지와는 관련이 없습니다.이 메시지는 검증 중인 데이터가 배열이 아님을 나타냅니다.게시한 예제 데이터로 인해 이 오류가 발생해서는 안 됩니다.질문 이외의 데이터에 대해 검증자를 실행하고 있습니까?

언급URL : https://stackoverflow.com/questions/36757949/json-schema-definition-for-array-of-objects

반응형