【发布时间】:2020-05-07 14:52:08
【问题描述】:
我正在尝试使用 Marshmallow 模式来序列化 python 对象。下面是我为我的数据定义的架构。
from marshmallow import Schema, fields
class User:
def __init__(self, name = None, age = None, is_active = None, details = None):
self.name = name
self.age = age
self.is_active = is_active
self.details = details
class UserSchema(Schema):
name = fields.Str()
age = fields.Int()
is_active = fields.Bool()
details = fields.Dict()
输入将是字典格式,所有值都将是字符串。
user_data = {"name":"xyz", "age":"20", "is_active": 'true',"details":"{'key1':'val1', 'key2':'val2'}"}
当我尝试运行下面的 sn-p 时,age 和 is_active 的值被转换为各自的数据类型,但 details 保持不变。
user_schema = UserSchema()
user_dump_data = user_schema.dump(user_data)
print(user_dump_data)
输出:
{'name': 'xyz', 'is_active': True, 'details': "{'key1':'val1', 'key2':'val2'}", 'age': 20}
我需要将输入数据序列化为我在架构中定义的相应数据类型。有什么我做错了吗?谁能指导我如何使用 Marshmallow 实现这一目标?
我正在使用
python 3.6
marshmallow 3.5.1
编辑
上述输入数据是从 HBase 中获取的。默认情况下,HBase 将其所有值存储为字节并以字节返回。下面是我从 HBase 得到的格式
{b'name': b'xyz', b'age': b'20', b'is_active': b'true', b'details': b"{'key1':'val1', 'key2':'val2'}"}
然后我解码此字典并将其传递给我的 UserSchema 以将其序列化以在 Web API 中使用。
【问题讨论】:
标签: python python-3.x marshmallow