我正在使用python 2.6中的标准json模块来序列化float列表。但是,我得到这样的结果:
>>> 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模块。
我该如何实现?