IT

oneOf 개체에 대한 Json 스키마 예제

itgroup 2023. 3. 29. 21:24
반응형

oneOf 개체에 대한 Json 스키마 예제

두 가지 다른 객체 유형을 검증하는 스키마를 구축하여 one Of가 어떻게 작동하는지 알아보려고 합니다.예를 들어, 사람(이름, 성, 스포츠)과 차량(종류, 비용)입니다.

다음은 몇 가지 샘플오브젝트입니다

{"firstName":"John", "lastName":"Doe", "sport": "football"}

{"vehicle":"car", "price":20000}

문제는 내가 무엇을 잘못했는지, 어떻게 그것을 고칠 수 있는가이다.스키마는 다음과 같습니다.

{
    "description": "schema validating people and vehicles", 
    "$schema": "http://json-schema.org/draft-04/schema#",
    "type": "object",
    "required": [ "oneOf" ],
    "properties": { "oneOf": [
        {
            "firstName": {"type": "string"}, 
            "lastName": {"type": "string"}, 
            "sport": {"type": "string"}
        }, 
        {
            "vehicle": {"type": "string"}, 
            "price":{"type": "integer"} 
        }
     ]
   }
}

이 파서로 유효성을 확인하려고 하면:

https://json-schema-validator.herokuapp.com/

다음의 에러가 표시됩니다.

   [ {
  "level" : "fatal",
  "message" : "invalid JSON Schema, cannot continue\nSyntax errors:\n[ {\n  \"level\" : \"error\",\n  \"schema\" : {\n    \"loadingURI\" : \"#\",\n    \"pointer\" : \"/properties/oneOf\"\n  },\n  \"domain\" : \"syntax\",\n  \"message\" : \"JSON value is of type array, not a JSON Schema (expected an object)\",\n  \"found\" : \"array\"\n} ]",
  "info" : "other messages follow (if any)"
}, {
  "level" : "error",
  "schema" : {
    "loadingURI" : "#",
    "pointer" : "/properties/oneOf"
  },
  "domain" : "syntax",
  "message" : "JSON value is of type array, not a JSON Schema (expected an object)",
  "found" : "array"
} ]

이것을 시험해 보세요.

{
    "description" : "schema validating people and vehicles",
    "type" : "object",
    "oneOf" : [
       {
        "type" : "object",
        "properties" : {
            "firstName" : {
                "type" : "string"
            },
            "lastName" : {
                "type" : "string"
            },
            "sport" : {
                "type" : "string"
            }
          }
      }, 
      {
        "type" : "object",
        "properties" : {
            "vehicle" : {
                "type" : "string"
            },
            "price" : {
                "type" : "integer"
            }
        },
        "additionalProperties":false
     }
]
}

하나스키마 내에서 사용해야만 작동합니다.

속성 내에서는 원하는 효과가 없는 "One Of"라는 또 다른 속성과 같습니다.

언급URL : https://stackoverflow.com/questions/25014650/json-schema-example-for-oneof-objects

반응형