使用 python 验证 JSON 数据

新手上路,请多包涵

我需要创建一个函数来验证传入的 json 数据并返回一个 python 字典。它应该检查 json 文件中是否存在所有必需的字段,并验证这些字段的数据类型。我需要使用 try-catch。你能提供一些能给我答案的片段或例子吗?

原文由 LennyDan 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 793
2 个回答

如果您还没有检查 jsonschema 库,它对验证数据很有用。 JSON Schema 是一种描述 JSON 内容的方式。该库仅使用格式根据给定的模式进行验证。

我从基本用法中做了一个简单的例子。

 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)

原文由 T.Nylund 发布,翻译遵循 CC BY-SA 4.0 许可协议

当您使用 JSON 文件时,您可以使用以下示例:

 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

原文由 ATernative 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题