首页 > 解决方案 > 字段类型为int时传入str没有错误?

问题描述

我正在验证字典中的数据。我指定年龄字段的类型是 int,但实际上,我传入的年龄是 str 类型。为什么没有错误?


from marshmallow import Schema, fields


class UserSchema(Schema):
    name = fields.Str()
    age = fields.Int()


user_data = {
    "name": "Ken",
    "age": "12"
}

try:
    UserSchema().load(user_data)
except Exception as e:
    print(e)

标签: pythonmarshmallow

解决方案


我猜marshmallow.fields在某个时候隐式地将年龄解析为 int 并且它没有抛出任何异常,因为“12”很好地转换为 12。当我运行你的代码时,这正是发生的事情,name是“Ken”并且age是 12。如果我将“12”更改为“12a”,那么它会如您预期的那样返回异常。


推荐阅读