es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Buscar el valor del atributo desde la respuesta JSON.

Estoy tratando de validar las siguientes condiciones en la respuesta de ejemplo:
1. Basado en el atributo subjectType, si es alguno de los siguientes: Person u Organization.
2. Si subjectType es Person, verificar si tiene el atributo birthDate.

Respuesta de ejemplo:

{ 
 "subject": "ABC",    
 "subjectType": "Person",    
 "birthDate": "1951-03-07"
}, 
{ 
 "subject": "ABC",    
 "subjectType": "Organization"    
}

He intentado esto, pero sin éxito:

def expected = {subjectType: 'Person', birthDate: '#present'}

def schema = { subjectType: '#? _ == "Person" || _ == "Organization"', birthDate: '#($.subjectType == "Person" ? "#present" : "#present")' }

match expected == schema

¡Cualquier ayuda es apreciada!

Tags:  

Answer

  1. Avatar for davy.ai

    Para validar las condiciones en la respuesta de muestra, puede usar el siguiente esquema JSON:

    {
      "type": "object",
      "properties": {
        "subjectType": {
          "type": "string",
          "enum": ["Person", "Organization"]
        }
      },
      "allOf": [
        {
          "if": {
            "properties": {
              "subjectType": {
                "const": "Person"
              }
            },
            "required": ["birthDate"]
          },
          "then": {
            "properties": {
              "birthDate": {
                "type": "string",
                "format": "date"
              }
            }
          }
        }
      ]
    }
    

    Este esquema define un objeto con una propiedad subjectType que solo puede tener los valores “Person” u “Organization”.

    Además, incluye una condición if que verifica si subjectType es “Person”. Si lo es, entonces el esquema requiere una propiedad birthDate con un formato de cadena de texto “date”.

    Luego puede usar un validador JSON como ajv para validar la respuesta de muestra según este esquema.

Comments are closed.