Validate JSON data using python

前端 未结 3 1831
日久生厌
日久生厌 2021-01-03 06:42

I’m pretty new in python so would you be so kind to help me? It seems to be really trivial question. I need to create a function that validates incoming json data and return

相关标签:
3条回答
  • 2021-01-03 07:23

    As you're using a JSON file, you can use this example:

    import json
    def validate(filename):
        with open(filename) as file:
            try:
                return json.load(file) # put JSON-data to a variable
            except json.decoder.JSONDecodeError:
                print("Invalid JSON") # in case json is invalid
            else:
                print("Valid JSON") # in case json is valid
    
    0 讨论(0)
  • 2021-01-03 07:32

    If you haven't check jsonschema library, it can be useful to validate data. JSON Schema is a way to describe the content of JSON. The library just uses the format to make validations based on the given schema.

    I made a simple example from basic usage.

    import json
    from jsonschema import validate
    
    # Describe what kind of json you expect.
    schema = {
        "type" : "object",
        "properties" : {
            "description" : {"type" : "string"},
            "status" : {"type" : "boolean"},
            "value_a" : {"type" : "number"},
            "value_b" : {"type" : "number"},
        },
    }
    
    # Convert json to python object.
    my_json = json.loads('{"description": "Hello world!", "status": true, "value_a": 1, "value_b": 3.14}')
    
    # Validate will raise exception if given json is not
    # what is described in schema.
    validate(instance=my_json, schema=schema)
    
    # print for debug
    print(my_json)
    
    0 讨论(0)
  • 2021-01-03 07:33

    I had the same problem and was dissatisfied with the existing solution of using jsonschema. It gives terrible error messages that are not at all user-friendly.

    I wrote my own library to define schemas, which has a lot of additional functionality over jsonschema:

    https://github.com/FlorianDietz/syntaxTrees

    It gives very precise error messages, allows you to write code to customize the validation process, lets you define functions that operate on the validated JSON, and even creates HTML documentation for the schemas you define.

    Schemas are defined as classes, similar to how Django defines models:

    class MyExampleNode(syntaxTreesBasics.Node):
        field_1 = fields.Float(default=0)
        field_2 = fields.String()
        field_3 = fields.Value('my_example_node', null=True, default=None)
        class Meta:
            name = 'my_example_node'
    
    0 讨论(0)
提交回复
热议问题