我有一个JSON API,其中的一个字段定义为fields.Dict
-数据可以包含有效的JSON,其内容由用户决定。
但是,现在存在一个问题,用户不能使用Decimals(需要将它们存储为字符串),因为存储后端(DynamoDB)仅支持Decimal
不支持float
-并传递{{1 }}无效,因为棉花糖会反序列化。
如何强制棉花糖将所有json.loads(... parse_float=Decimal)
中带有.
的数字(递归)视为fields.Dict
或强制棉花糖始终传递Decimal
参数JSON加载?
答案 0 :(得分:1)
如何强制棉花糖始终将
parse_float
参数传递给JSON负载?
您可以指定自定义render_module
。
import json
class MyJsonDecimalLoader:
@staticmethod
def loads(data):
return json.loads(data, parse_float=Decimal)
class MySchema(marshmallow.Schema):
class Meta:
render_module = MyJsonDecimalLoader
[...]
我看不到仅使用棉花糖字段如何做得更好,因为dict值中的数据结构是宽松定义的。