Tôi đang sử dụng mô-đun json tiêu chuẩn trong python 2.6 để tuần tự hóa danh sách các phao. Tuy nhiên, tôi nhận được kết quả như thế này:
>>> import json
>>> json.dumps([23.67, 23.97, 23.87])
'[23.670000000000002, 23.969999999999999, 23.870000000000001]'
Tôi muốn các phao được định dạng chỉ với hai chữ số thập phân. Đầu ra sẽ giống như sau:
>>> json.dumps([23.67, 23.97, 23.87])
'[23.67, 23.97, 23.87]'
Tôi đã thử xác định lớp Bộ mã hóa JSON của riêng mình:
class MyEncoder(json.JSONEncoder):
def encode(self, obj):
if isinstance(obj, float):
return format(obj, '.2f')
return json.JSONEncoder.encode(self, obj)
Điều này hoạt động cho một đối tượng float duy nhất:
>>> json.dumps(23.67, cls=MyEncoder)
'23.67'
Nhưng không thành công đối với các đối tượng lồng nhau:
>>> json.dumps([23.67, 23.97, 23.87])
'[23.670000000000002, 23.969999999999999, 23.870000000000001]'
Tôi không muốn có các phụ thuộc bên ngoài, vì vậy tôi thích gắn bó với mô-đun json tiêu chuẩn.
Làm thế nào tôi có thể đạt được điều này?