代码之家  ›  专栏  ›  技术社区  ›  Kimvais

如何让棉花糖(>=3.0)处理字段中的数字。Dict()作为小数

  •  0
  • Kimvais  · 技术社区  · 7 年前

    我有一个JSON API,其中一个字段定义为 fields.Dict -数据可以包含有效的JSON,其内容由用户决定。

    然而,现在存在一个问题,即用户不能使用小数(需要将其存储为字符串),因为存储后端(DynamoDB)只支持小数 Decimal 不 float -路过 json.loads(... parse_float=Decimal) 不起作用,因为反序列化是由棉花糖完成的。

    我怎样才能强迫棉花糖(递归地)用 . 在他们身上 领域。字典 像 十进制的 s或强制棉花糖始终通过 parse_float 参数来加载JSON?

    0 回复  |  直到 7 年前
        1
  •  1
  •   Jérôme    7 年前

    我怎么能[…]强迫棉花糖始终通过 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值中的数据结构是松散定义的。