我从 API 获取 JSON 格式的数据,可能是接收到的数据不完整(= 缺少某些字段)。我也不确定数据结构是否遵循 JSON 标准。
第二个问题的解决方案很简单:我将try:
解码JSON 并对ValueError
和TypeError
异常采取相应的行动。
对于第一个问题,我的解决方案也是
d = {'a': 1}
try:
d['a']
d['b']
d['x']['shouldbethere']
except KeyError:
(...)
那是在成功的 JSON 转换创建的 dict
中列出我需要的所有键。
这让我想到可能有一种方法来声明预期的键(可能还有值类型)并将检索到的 JSON 与之匹配,不成功的匹配会引发特定异常?
最佳答案
验证 JSON 结构的标准方法是使用 JSON Schema . 基本特征(引用自官网)为:
JSON Schema:
- describes your existing data format
- clear, human- and machine-readable documentation
- complete structural validation, useful for
- automated testing
- validating client-submitted data
虽然您可以使用 jsonschema,但没有内置包来根据模式验证 JSON 对象。来自 pypi。
示例用法(转自官方文档)可能是:
import jsonschema
schema = {
"type": "object",
"properties": {
"price": {"type": "number"},
"name": {"type": "string"},
},
}
jsonschema.validate({"name": "Eggs", "price": 34.99}, schema)
# No exception from line above - document is valid
jsonschema.validate({"name": "Eggs", "price": "Invalid"}, schema)
# ValidationError: 'Invalid' is not of type 'number'
关于python - 如何检查JSON数据的完整性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34837610/