我试图通过构建验证两种不同对象类型的模式来弄清楚oneOf是如何工作的.例如一个人(名字,姓氏,运动)和车辆(类型,成本).
以下是一些示例对象:
{"firstName":"John", "lastName":"Doe", "sport": "football"}
{"vehicle":"car", "price":20000}
Run Code Online (Sandbox Code Playgroud)
问题是我做错了什么,我该如何解决它.这是架构:
{
"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"}
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试在此解析器中验证它时:
https://json-schema-validator.herokuapp.com/
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
[ {
"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\" …Run Code Online (Sandbox Code Playgroud) 我花了一整天的时间试图让它发挥作用,将在问题后发布参考文献和我尝试过的事情的列表。
这是我的 jsonschema:
{
"data": [{
"required": "effort",
"decisive": "maybe",
"field1": 7
},
{
"required": "effort",
"decisive": "no",
"field1": 6
}],
"schema": {
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "array",
"items": {
"type": "object",
"properties": {
"field1": {
"type": "string",
"pattern": "[A-Z]",
"title": "field1"
},
"required": {
"type": "string",
"title": "required",
"readonly": true
},
"decisive": {
"type": "string",
"title": "Decisive",
"enum": ["yes", "no", "maybe", "not now"]
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
考虑 jsonschema 的确切部分,但其field1元素如下:
"field1": {
"type": "integer",
"minimum": 5,
"maximum": …Run Code Online (Sandbox Code Playgroud)