oneOf对象的Json Schema示例

我试图通过构建验证两种不同对象类型的架构来弄清oneOf的工作原理。例如,一个人(名字,姓氏,运动)和车辆(类型,费用)。

以下是一些示例对象:

{"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" : [{

"properties" : {

"firstName" : {

"type" : "string"

},

"lastName" : {

"type" : "string"

},

"sport" : {

"type" : "string"

}

},

"required" : ["firstName"]

}, {

"properties" : {

"vehicle" : {

"type" : "string"

},

"price" : {

"type" : "integer"

}

},

"additionalProperties":false

}

]

}

以上是 oneOf对象的Json Schema示例 的全部内容, 来源链接: utcz.com/qa/426928.html

回到顶部