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.

Cómo validar json con la ayuda de jsonschema?

Quiero validar mi entrada JSON – my_json. Esperaba una excepción (porque job1 no es job).

¿Cómo validar este JSON?

import json
from jsonschema import validate

# Describe qué tipo de JSON esperas.
schema = {
    "job" : {"type" : "string"},
    "big_list": [
    {
        "id": 1,
        "code": "qqq"
    },
    {
        "id": 2,
        "code": ""
    }
    # muchos elementos
    ]
}

# Convierte JSON a un objeto de Python.
my_json = {'job1': "as", 'big_list': [{'id': 1, 'code': 'qqq'}, {'id': 2, 'code': ''}]}
validate(instance=my_json, schema=schema) # Esperaba una excepción pero no hubo ninguna excepción
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para validar la entrada my_json utilizando el esquema proporcionado, puedes usar el siguiente código:

    import json
    from jsonschema import validate, ValidationError
    
    # Describe qué tipo de json esperas.
    schema = {
        "job": {"type": "string"},
        "big_list": [
            {
                "id": {"type": "integer"},
                "code": {"type": "string"}
            }
            # muchos elementos
        ]
    }
    
    # Convierte el json en un objeto de Python.
    my_json = {'job1': "as", 'big_list': [{'id': 1, 'code': 'qqq'}, {'id': 2, 'code': ''}]}
    
    try:
        validate(instance=my_json, schema=schema)
    except ValidationError as e:
        print("La entrada no es válida:", e)
    

    En este código, la función jsonschema.validate se utiliza para validar el objeto my_json contra el schema. El bloque try se utiliza para capturar cualquier excepción jsonschema.exceptions.ValidationError que pueda generarse durante la validación.

    En el esquema proporcionado, se espera que el campo job sea una cadena de texto, mientras que el campo big_list se espera que sea una lista de objetos, cada uno con un campo id de tipo integer y un campo code de tipo string.

    En la entrada my_json, el campo job1 no coincide con el campo job definido en el esquema, por lo que se debe generar una excepción al validar la entrada.

    El código anterior capturará esta excepción e imprimirá un mensaje de error indicando que la entrada no es válida.

Comments are closed.