Python 3.x 如何使棉花糖(>;=3.0)将fields.Dict()中的数字视为小数
我有一个JSON API,其中一个字段定义为Python 3.x 如何使棉花糖(>;=3.0)将fields.Dict()中的数字视为小数,python-3.x,amazon-dynamodb,marshmallow,Python 3.x,Amazon Dynamodb,Marshmallow,我有一个JSON API,其中一个字段定义为字段。Dict-数据可以包含有效的JSON,其内容由用户决定 但是,现在存在一个问题,即用户不能使用小数(需要将其存储为字符串),因为存储后端(DynamoDB)只支持Decimal而不支持float,并且传递json。加载(…parse_float=Decimal)不起作用,因为反序列化是由Marshmallow完成的 如何强制marshmallow(递归地)在字段中处理所有带有的数字。将指定为十进制s,或者强制marshmallow始终将parse
字段。Dict
-数据可以包含有效的JSON,其内容由用户决定
但是,现在存在一个问题,即用户不能使用小数(需要将其存储为字符串),因为存储后端(DynamoDB)只支持Decimal
而不支持float
,并且传递json。加载(…parse_float=Decimal)
不起作用,因为反序列化是由Marshmallow完成的
如何强制marshmallow(递归地)在字段中处理所有带有
的数字。将指定为十进制
s,或者强制marshmallow始终将parse_float
参数传递给JSON load
如何[…]强制棉花糖始终将parse_float
参数传递给JSON加载
您可以指定自定义的渲染模块
导入json
类MyJsonDecimalLoader:
@静力学方法
def加载(数据):
返回json.loads(数据,parse_float=Decimal)
类MySchema(marshmallow.Schema):
类元:
render_module=MyJsonDecimalLoader
[...]
我看不出仅仅使用棉花糖字段如何做得更好,因为dict值中的数据结构是松散定义的