दोनों पायथन dict(पायथन 3.7 से पहले) और JSON ऑब्जेक्ट अनियोजित संग्रह हैं। sort_keysकुंजी को सॉर्ट करने के लिए आप पैरामीटर पारित कर सकते हैं :
>>> import json
>>> json.dumps({'a': 1, 'b': 2})
'{"b": 2, "a": 1}'
>>> json.dumps({'a': 1, 'b': 2}, sort_keys=True)
'{"a": 1, "b": 2}'
यदि आपको किसी विशेष आदेश की आवश्यकता है; आप उपयोगcollections.OrderedDict कर सकते हैं :
>>> from collections import OrderedDict
>>> json.dumps(OrderedDict([("a", 1), ("b", 2)]))
'{"a": 1, "b": 2}'
>>> json.dumps(OrderedDict([("b", 2), ("a", 1)]))
'{"b": 2, "a": 1}'
पायथन 3.6 के बाद से , कीवर्ड तर्क क्रम संरक्षित है और ऊपर एक अच्छे सिंटैक्स का उपयोग करके फिर से लिखा जा सकता है:
>>> json.dumps(OrderedDict(a=1, b=2))
'{"a": 1, "b": 2}'
>>> json.dumps(OrderedDict(b=2, a=1))
'{"b": 2, "a": 1}'
PEP 468 देखें - खोजशब्द तर्क आदेश का संरक्षण ।
यदि आपका इनपुट JSON के रूप में दिया गया है तो ऑर्डर को सुरक्षित रखने के लिए (पाने के लिए OrderedDict), आप पास कर सकते हैं object_pair_hook, जैसा कि @Fred Yowsowski द्वारा सुझाया गया है :
>>> json.loads('{"a": 1, "b": 2}', object_pairs_hook=OrderedDict)
OrderedDict([('a', 1), ('b', 2)])
>>> json.loads('{"b": 2, "a": 1}', object_pairs_hook=OrderedDict)
OrderedDict([('b', 2), ('a', 1)])