Bir kayan nokta listesini serileştirmek için python 2.6'daki standart json modülünü kullanıyorum . Ancak şöyle sonuçlar alıyorum:
>>> import json
>>> json.dumps([23.67, 23.97, 23.87])
'[23.670000000000002, 23.969999999999999, 23.870000000000001]'
Yüzen sayıların yalnızca iki ondalık basamakla biçimlendirilmesini istiyorum. Çıktı şöyle görünmelidir:
>>> json.dumps([23.67, 23.97, 23.87])
'[23.67, 23.97, 23.87]'
Kendi JSON Encoder sınıfımı tanımlamayı denedim:
class MyEncoder(json.JSONEncoder):
def encode(self, obj):
if isinstance(obj, float):
return format(obj, '.2f')
return json.JSONEncoder.encode(self, obj)
Bu, tek bir kayan nesne için çalışır:
>>> json.dumps(23.67, cls=MyEncoder)
'23.67'
Ancak iç içe geçmiş nesnelerde başarısız olur:
>>> json.dumps([23.67, 23.97, 23.87])
'[23.670000000000002, 23.969999999999999, 23.870000000000001]'
Harici bağımlılık istemiyorum, bu yüzden standart json modülüne bağlı kalmayı tercih ediyorum.
Bunu nasıl başarabilirim?