El resto de servicios de respuesta de la que estoy trabajando es similar al siguiente ejemplo, sólo he incluido 3 campos de 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 JSON archivo de esquema para arriba (proyecto-04) que se especifique 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 soy incapaz de encontrar cualquier documentación o ejemplo de cómo hacerlo.

Actualmente mi JSON esquema se ve como el siguiente:

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

Los punteros/ejemplos de cómo debo manejar esta situación.

  • Creo que se debe describir esto con una herencia: Tipo de Persona se extiende MyObject, tipo de Empresa se extiende MyObject, y en su principal esquema de definir un array con los elementos de tipo MyObject
  • No sé cómo de similares JSONSchema es XSD, pero de lo que puedo recordar acerca de XSD usted no necesita una superclase común para su objeto. Más bien sería su herencia en la schemafiles. E. g un resumen de marcador de posición en el principal esquema, que permita a la persona del esquema y de la compañía de esquema para tomar su lugar.
  • Veo dependencias es también en el draf 3. Cany alguien explique las diferencias con respecto a las dependencias entre los proyectos 3 y 4?
  • No creo que el Señor Bean nació el 14 de Dic ’81.
InformationsquelleAutor nishant | 2013-08-22

2 Comentarios

  1. 33

    Creo que el enfoque recomendado es el que se muestra en Json-Esquema de la web, Ejemplo2. Usted necesidad de utilizar un enum 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" ] },
                    . . . 
                }        
            }
        }
    }
    • ¿Qué te gustaría usar en lugar de oneOf si sólo se sabe que el contenido de los resultados de la matriz de la propiedad son algunos desconocidos sub tipos de, dice, «Fiesta» ? pregunta relacionada con el publicado aquí, stackoverflow.com/questions/19416873/… 🙂
  2. 10

    Lo siento,

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

    No me parece ‘dependencias’ en la aceptación de la respuesta (?)

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

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

    empieza en la página 29 (véase, explicó en la página 30)

    "dependencies": {
         "shipTo":["shipAddress"],
         "loyaltyId":["loyaltyBonus"]
    }
    • Hola Sebastian, el Uso de dependencias es posible alcanzar el anterior caso de uso. [Pregunta-haga clic en por favor] (stackoverflow.com/questions/36830827/…) . Es posible hacer que el campo sea obligatorio basado en el valor de otra propiedad. Sería grande si usted podría responder a la pregunta en el enlace. Gracias, Harry.
    • ¿Es realmente necesario? La respuesta de algunos minutos, después se le preguntó por «Jason» es perfecto ! (consulte su pregunta)
    • quizás el título es confuso, pero por favor, lea la pregunta original de texto después de which will explicitly specify that y usted encontrará que la respuesta resuelve la cuestión de los requisitos. La pregunta no está relacionada con el uso de json-esquema dependencies palabra clave realmente. Siéntase libre de mejorar el título.

Dejar respuesta

Please enter your comment!
Please enter your name here