我正在使用 python 2.6中的标准 json module序列化浮点数列表。然而,我得到的结果是这样的:
>>> import json
>>> json.dumps([23.67, 23.97, 23.87])
'[23.670000000000002, 23.969999999999999, 23.870000000000001]'
我希望浮点数的格式只有两个小数位。输出应该是这样的:
>>> json.dumps([23.67, 23.97, 23.87])
'[23.67, 23.97, 23.87]'
我尝试定义自己的 JSON Encoder 类:
class MyEncoder(json.JSONEncoder):
def encode(self, obj):
if isinstance(obj, float):
return format(obj, '.2f')
return json.JSONEncoder.encode(self, obj)
这适用于惟一的 float 对象:
>>> json.dumps(23.67, cls=MyEncoder)
'23.67'
但对于嵌套对象,这种方法失败了:
>>> json.dumps([23.67, 23.97, 23.87])
'[23.670000000000002, 23.969999999999999, 23.870000000000001]'
我不想有外部依赖项,所以我更喜欢使用标准的 json 模块。
我怎么才能做到呢?