Cómo usar las definiciones en el esquema JSON (borrador-04)

La respuesta del servicio de descanso con la que estoy trabajando es similar al ejemplo siguiente, solo he incluido 3 campos aquí, pero hay muchos más:

{ "results": [ { "type": "Person", "name": "Mr Bean", "dateOfBirth": "14 Dec 1981" }, { "type": "Company", "name": "Pi", "tradingName": "Pi Engineering Limited" } ] } 

Quiero escribir un archivo de esquema JSON para arriba (borrador-04) que especificará explícitamente que:

 if type == Person then list of required properties is ["type", "name", "dateOfBirth", etc] OR if type == "Company" then list of required properties is ["type", "name", "tradingName", etc] 

Sin embargo, no puedo encontrar ninguna documentación o ejemplo de cómo hacerlo.

Actualmente mi esquema JSON tiene el siguiente aspecto:

 { "$schema": "http://json-schema.org/draft-04/schema", "type": "object", "required": ["results" ], "properties": { "results": { "type": "array", "items": { "type": "object", "required": ["type", "name"], "properties": { "type": { "type": "string" }, "name": { "type": "string" }, "dateOfBirth": { "type": "string" }, "tradingName": { "type": "string" } } } } } } 

Cualquier punteros / ejemplos de cómo debería manejar esto.

    Creo que el enfoque recomendado es el que se muestra en Json-Schema web, Example2 . Necesita usar una enumeración para seleccionar esquemas “por valor”. En tu caso, sería algo así como:

     { "type": "object", "required": [ "results" ], "properties": { "results": { "type": "array", "items": { "oneOf": [ { "$ref": "#/definitions/person" }, { "$ref": "#/definitions/company" } ] } } }, "definitions": { "person": { "properties": { "type": { "enum": [ "person" ] }, "name": {"type": "string" }, "dateOfBirth": {"type":"string"} }, "required": [ "type", "name", "dateOfBirth" ], "additionalProperties": false }, "company": { "properties": { "type": { "enum": [ "company" ] }, . . . } } } } 

    Lo siento,

    No entiendo el punto. La pregunta es sobre la palabra clave ‘dependencias’ que es parte de la última especificación del esquema JSON, ¿verdad?

    No encuentro ‘dependencias’ en la respuesta aceptada (?)

    Se explica brevemente en el último borrador. Pero http://usingjsonschema.com explicó las dependencias de propiedad y definición en el libro:

    http://usingjsonschema.com/assets/UsingJsonSchema_20140814.pdf

    comience en la página 29 (vea, explicado en la página 30)

     "dependencies": { "shipTo":["shipAddress"], "loyaltyId":["loyaltyBonus"] }