validator valid tutorial online example json schema jsonschema

tutorial - json schema validator javascript online



Ejemplo de esquema Json para objetos oneOf (2)

Estoy tratando de averiguar cómo funciona oneOf construyendo un esquema que valida dos tipos de objetos diferentes. Por ejemplo, una persona (nombre, apellido, deporte) y vehículos (tipo, costo).

Aquí hay algunos objetos de muestra:

{"firstName":"John", "lastName":"Doe", "sport": "football"} {"vehicle":"car", "price":20000}

La pregunta es qué he hecho mal y cómo puedo solucionarlo. Aquí está el esquema:

{ "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"} } ] } }

Cuando intento validarlo en este analizador:

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

Obtuve el siguiente error:

[ { "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" } ]


Prueba esto:

{ "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 necesita ser utilizado dentro de un esquema para funcionar.

Dentro de las propiedades , es como otra propiedad llamada "oneOf" sin el efecto que deseas.