Python JSON 序列化 Decimal 对象

2024-02-04

我有一个Decimal('3.9')作为对象的一部分,并希望将其编码为 JSON 字符串,该字符串应如下所示{'x': 3.9}。我不关心客户端的精度,所以浮动就可以了。

有没有好的方法来序列化这个? JSONDecoder 不接受 Decimal 对象,并且事先转换为 float 会产生{'x': 3.8999999999999999}这是错误的,并且会浪费带宽。


简单json 2.1 https://github.com/simplejson/simplejson以及更高版本对 Decimal 类型有本机支持:

>>> json.dumps(Decimal('3.9'), use_decimal=True)
'3.9'

注意use_decimal is True默认情况下:

def dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True,
    allow_nan=True, cls=None, indent=None, separators=None,
    encoding='utf-8', default=None, use_decimal=True,
    namedtuple_as_object=True, tuple_as_array=True,
    bigint_as_string=False, sort_keys=False, item_sort_key=None,
    for_json=False, ignore_nan=False, **kw):

So:

>>> json.dumps(Decimal('3.9'))
'3.9'

希望这个功能能够被包含在标准库中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python JSON 序列化 Decimal 对象 的相关文章

随机推荐