python - 字段类型为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)
解决方案
我猜marshmallow.fields在某个时候隐式地将年龄解析为 int 并且它没有抛出任何异常,因为“12”很好地转换为 12。当我运行你的代码时,这正是发生的事情,name
是“Ken”并且age
是 12。如果我将“12”更改为“12a”,那么它会如您预期的那样返回异常。
推荐阅读
- google-bigquery - 为什么我的 BigQuery 查询返回的日期不是我在 WHERE 子句中指定的日期?
- windows-server-2016 - 如何配置 Windows Server 2016 以将 Glassfish 用作 Web 服务器?
- logging - 禁用 Pentaho 日志记录
- javascript - 使用 Nearley.js 解析的友好错误报告
- asp.net - 比较数据库的数据
- bash - 使用循环更新屏幕的特定部分,但我该怎么做?
- c - fgets 读取最后一行两次
- typescript - 枚举的所有可能值的打字稿类型
- mongodb-stitch - StitchError:找不到服务:'mongodb-atlas'
- java - 如何强制 Android 的文本从手机的顶部扬声器发出语音,就好像它是普通电话一样