मैं झंडे की सूची को क्रमबद्ध करने के लिए अजगर 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 मॉड्यूल के साथ रहना पसंद करता हूं।
इसे कैसे प्राप्त किया जा सकता है?