Я використовую стандартний модуль json в python 2.6, щоб серіалізувати список плавців. Однак я отримую такі результати:
>>> 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:
class MyEncoder(json.JSONEncoder):
def encode(self, obj):
if isinstance(obj, float):
return format(obj, '.2f')
return json.JSONEncoder.encode(self, obj)
Це працює для єдиного поплавкового об'єкта:
>>> json.dumps(23.67, cls=MyEncoder)
'23.67'
Але виходить з ладу для вкладених об'єктів:
>>> json.dumps([23.67, 23.97, 23.87])
'[23.670000000000002, 23.969999999999999, 23.870000000000001]'
Я не хочу мати зовнішніх залежностей, тому віддаю перевагу стандартному модулю json.
Як я можу цього досягти?