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
相关产品推荐
相关产品推荐

