You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python JSON必填字段通用验证方案咨询:含列表项属性校验

使用Python库验证JSON必填字段(替代手动遍历)

推荐用jsonschema库实现通用JSON校验,它能轻松处理嵌套结构、列表元素批量校验等场景,彻底替代手动遍历的繁琐操作。

步骤1:安装库

pip install jsonschema

步骤2:编写校验规则(JSON Schema)

针对你的示例JSON,定义对应的Schema,明确必填字段和列表元素的校验要求:

from jsonschema import validate, ValidationError

# 定义JSON校验规则
schema = {
    "type": "object",
    "required": ["service"],
    "properties": {
        "service": {
            "type": "object",
            "required": ["refNumber", "item"],
            "properties": {
                "refNumber": {"type": "string"},
                "item": {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "required": ["itemnumber"],
                        "properties": {
                            "itemnumber": {"type": "string"},
                            "itemloc": {"type": "string"}  # 非必填字段,可选定义类型约束
                        }
                    }
                }
            }
        }
    }
}

步骤3:执行校验

加载目标JSON数据,调用validate方法完成校验:

# 待验证的JSON数据
json_data = {
    "service": {
        "refNumber": "abc",
        "item": [
            {"itemnumber": "1", "itemloc": "uk"},
            {"itemnumber": "2", "itemloc": "us"}
        ]
    }
}

try:
    validate(instance=json_data, schema=schema)
    print("JSON校验通过")
except ValidationError as e:
    print(f"JSON校验失败: {e.message}")

关键规则说明

  • required数组:指定当前层级必须存在的字段,比如service下的refNumber和item均为必填项
  • array类型的items字段:定义列表中每个元素的结构,这里强制要求每个item元素必须包含itemnumber字段
  • 可扩展性:如果需要更复杂的校验(比如字段格式、长度、枚举值等),直接在Schema中添加对应规则即可,无需修改核心校验逻辑

校验失败示例

若JSON数据缺少refNumber,或某个item未包含itemnumber,会抛出明确的错误提示:
比如使用以下无效数据:

invalid_json = {
    "service": {
        "item": [
            {"itemloc": "uk"},  # 缺少itemnumber字段
            {"itemnumber": "2"}
        ]
    }
}

执行校验会输出:

JSON校验失败: 'refNumber' is a required property

内容的提问来源于stack exchange,提问作者Krishna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 07:35:27