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

Python使用jsonschema验证JSON时报实例非array类型问题求助

错误原因

  • 问题出在你传入验证的实例类型不符合预期:你调用json.JSONEncoder.encode(a_polygon)后,得到的a_polygon_json是字符串类型,而你定义的polygon_schema要求实例类型为array,对应Python中的列表类型,因此触发类型校验失败。报错信息里实例外层包裹的单引号也能证明传入的是字符串,不是数组。
  • jsonschema库的validate方法针对Python原生数据结构做校验,不需要提前将数据序列化为JSON字符串。

解决方案

根据你的使用场景选择对应处理方式:

  1. 如果你校验的数据源本身就是Python原生列表(比如你代码里定义的a_polygon),直接传入原生对象验证即可,修改验证代码行为:
validate(instance=a_polygon, schema=polygon_schema)
  1. 如果你拿到的原始数据就是JSON字符串,需要先将其反序列化为Python对象再验证,示例代码:
import json
from jsonschema import validate

# 假设原始输入为JSON字符串
a_polygon_json = '[{"x": 1, "y": 2}, {"x": 3, "y": 4}, {"x": 1, "y": 2}]'
# 先反序列化
a_polygon = json.loads(a_polygon_json)
# 再执行验证
validate(instance=a_polygon, schema=polygon_schema)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 00:36:04