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

Marshmallow嵌套Schema报错:Invalid input type问题求助

问题排查与解决

核心错误原因

你在实例化Schema时设置了many=True:

chalan_details_Schema = ChalanDetailsSchema(many=True)

这个参数表示当前Schema需要接收数组(列表)格式的输入,但你从Postman传入的是单个JSON对象,而非数组,类型不匹配导致了"Invalid input type"错误。

两种解决方式

方式一:修改Schema实例化(适配单个对象输入)

如果业务场景是接收单个ChalanDetails对象,去掉many=True参数,同时修正代码缩进(chalan_details_Schema的缩进要和类定义同级,避免成为类属性):

class ChalanProductsSchema(Schema):
    product_id = fields.Str(required=True)


class ChalanDetailsSchema(Schema):
    chalan_id = fields.Str(required=True)
    rows = fields.Nested(ChalanProductsSchema, many=True)


# 去掉many=True,修正缩进
chalan_details_Schema = ChalanDetailsSchema()

# 序列化JSON
data = chalan_details_Schema.load(json_data)

方式二:修改Postman传入的JSON(适配数组格式)

如果业务场景确实需要接收多个ChalanDetails对象,保持many=True不变,将Postman的JSON改为数组格式:

[
  {
    "chalan_id":"2022.08.0002",
    "rows":[
      {
        "product_id":"XXXXXXXX1"
      },
      {
        "product_id":"XXXXXXXX2"
      }
    ]
  }
]

额外注意点

原代码中chalan_details_Schema的缩进属于ChalanDetailsSchema类内部,会被当作类属性而非全局的Schema实例,这也可能导致后续调用异常,务必修正缩进。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 04:30:54