python - 如何检查JSON数据的完整性

标签 python json

我从 API 获取 JSON 格式的数据,可能是接收到的数据不完整(= 缺少某些字段)。我也不确定数据结构是否遵循 JSON 标准。

第二个问题的解决方案很简单:我将try: 解码JSON 并对ValueErrorTypeError 异常采取相应的行动。

对于第一个问题,我的解决方案也是

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/

相关文章:

JSON-LD:值的名称是必需的吗?

python - 为什么在使用 json.dumps 时 python dict 的 int 键会变成字符串?

python - Pandas :一系列数组到一系列转置数组

javascript - 如何修改对象数组中的json对象

sql-server - 从存储过程调用 Web Api 2 端点

c# - 将 JSON 字符串解析为 List<string>

python - 从(行、列、值)数据创建 Pandas DataFrame

python - 匹配键值对

python - 如何创建一个具有特定 len 的 python 数组,每个元素都初始化为 0

python - 我怎么知道工作是否已经/正在执行? - 定时任务