Exemple de schéma Json pour un des objets
j'essaie de comprendre comment l'un d'eux fonctionne en construisant un schéma qui valide deux types d'objets différents. Par exemple, une personne (prénom, nom, sport) et des véhicules (type, coût).
Voici quelques exemples d'objets:
{"firstName":"John", "lastName":"Doe", "sport": "football"}
{"vehicle":"car", "price":20000}
la question Est de savoir ce que j'ai fait de mal et comment je peux y remédier. Voici le schéma:
{
"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"}
}
]
}
}
Quand j'essaie de le valider dans cette analyse:
https://json-schema-validator.herokuapp.com/
j'obtiens l'erreur suivante:
[ {
"level" : "fatal",
"message" : "invalid JSON Schema, cannot continuenSyntax 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"
} ]
24
demandé sur
Jonathan Hartley
2014-07-29 15:52:34
2 réponses
essaye ceci:
{
"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
}
]
}
38
répondu
jruizaranguren
2014-07-30 09:32:03
un des besoin d'être utilisé à l'intérieur d'un schéma au travail.
à l'Intérieur propriétés, c'est comme une autre propriété appelée "oneOf" sans l'effet que vous voulez.
9
répondu
Arian Kiehr
2014-07-29 17:27:45