【问题标题】:How to validate json with help of jsonschema?如何在 jsonschema 的帮助下验证 json?
【发布时间】:2022-01-21 16:46:36
【问题描述】:

我想验证我的 json 输入 -- my_json。我预计会出现异常(因为 job1 不是工作。

如何验证这个 json?

import json
from jsonschema import validate

# Describe what kind of json you expect.
schema = {
    "job" : {"type" : "string"},
    "big_list": [
    {
        "id": 1,
        "code": "qqq"
    },
    {
        "id": 2,
        "code": ""
    }
    # many items
    ]
}

# Convert json to python object.
my_json = {'job1': "as", 'big_list': [{'id': 1, 'code': 'qqq'}, {'id': 2, 'code': ''}]}
validate(instance=my_json, schema=schema) # I expected exception, but have no exceptions

【问题讨论】:

    标签: python json jsonschema


    【解决方案1】:

    您正确地进行了测试,但架构错误。架构应该是这样的。您可以查看 json 架构文档here

    import json
    from jsonschema import validate
    
    # Describe what kind of json you expect.
    schema = {
        "type" : "object",
        "properties" : 
        {
            "job" : {"type" : "string"},
            "big_list" : {"type" : "object"},
         }
    }
    
    # Convert json to python object.
    my_json = {'job1': "as", 'big_list': [{'id': 1, 'code': 'qqq'}, {'id': 2, 'code': ''}]}
    valid_json = {'job1': "as", 'big_list': {'id': 1, 'code': 'qqq'}}
    validate(instance=valid_json, schema=schema) # 
    print('valid json has passed')
    validate(instance=my_json, schema=schema) # this should raise an error
    

    【讨论】:

    • 如何指定 big_list 的一项? (例如项目数量可能不同)
    • 如果你的意思是在大列表中指定项目的架构,
    • 阅读关于对象以及如何禁止附加属性的部分。
    • 如果你想让它抛出错误,你需要把 additionalProperties=false here btw这与python代码无关,它只是json模式的定义
    猜你喜欢
    • 1970-01-01
    • 2018-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-21
    • 2011-02-23
    • 1970-01-01
    相关资源
    最近更新 更多