"json.dumps" का उपयोग करते समय JSON कुंजी ऑर्डर असंगतताएं
पायथन में, JSON रूपांतरण में अक्सर परिवर्तन के लिए "json.dumps" का उपयोग करना शामिल होता है JSON ऑब्जेक्ट में शब्दकोश। हालाँकि, उपयोगकर्ताओं को परिणामी JSON कुंजी क्रम में विसंगतियों का सामना करना पड़ सकता है, अपेक्षित अनुक्रम (आईडी, नाम, समयक्षेत्र) वास्तविक आउटपुट (समयक्षेत्र, आईडी, नाम) से भिन्न हो सकता है।
इस समस्या को हल करने और लागू करने के लिए वांछित कुंजी क्रम, दो दृष्टिकोण उपलब्ध हैं:
1. "सॉर्ट_कीज़" पैरामीटर का उपयोग:
"सॉर्ट_कीज़" पैरामीटर, जब ट्रू पर सेट किया जाता है, तो JSON कुंजियों को वर्णानुक्रम में सॉर्ट करता है। उदाहरण के लिए, निम्नलिखित कोड स्निपेट से वांछित कुंजी क्रम प्राप्त होगा:
import json
countries = []
countries.append({"id": 1, "name": "Mauritius", "timezone": 4})
countries.append({"id": 2, "name": "France", "timezone": 2})
countries.append({"id": 3, "name": "England", "timezone": 1})
countries.append({"id": 4, "name": "USA", "timezone": -4})
json_data = json.dumps(countries, sort_keys=True)
print(json_data)
2. ऑर्डर्डडिक्ट को नियोजित करना:
पायथन का "collections.OrderedDict" कुंजी प्रविष्टि क्रम को बरकरार रखता है। ऑर्डर्डडिक्ट का उपयोग करके, अपेक्षित कुंजी ऑर्डर प्राप्त किया जा सकता है:
from collections import OrderedDict
countries = OrderedDict()
countries["id"] = 1
countries["name"] = "Mauritius"
countries["timezone"] = 4
json_data = json.dumps(countries)
print(json_data)
पायथन 3.6 और इसके बाद के संस्करण में, कीवर्ड तर्क क्रम को डिफ़ॉल्ट रूप से संरक्षित किया जाता है, जिससे अधिक संक्षिप्त वाक्यविन्यास की अनुमति मिलती है:
json_data = json.dumps(OrderedDict(id=1, name="Mauritius", timezone=4))
print(json_data)
अंत में, JSON इनपुट के लिए, "ऑब्जेक्ट_पेयर_हुक" पैरामीटर का उपयोग ऑब्जेक्ट ऑर्डर को संरक्षित करने और ऑर्डर्डडिक्ट उत्पन्न करने के लिए किया जा सकता है:
import json
json_data = json.loads('{"id": 1, "name": "Mauritius", "timezone": 4}', object_pairs_hook=OrderedDict)
print(json_data)
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3