यह विभिन्न मानचित्रण संग्रहों में उन सूक्ष्म अंतरों में से एक है जो आपको काट सकते हैं। JSON स्ट्रिंग्स के रूप में कुंजियों का व्यवहार करता है; पायथन केवल प्रकार में भिन्न होने वाली अलग-अलग कुंजी का समर्थन करता है।
पायथन में (और स्पष्ट रूप से लूआ में) क्रमशः मानचित्रण (शब्दकोश या तालिका) की कुंजी वस्तु संदर्भ हैं। अजगर में वे अपरिवर्तनीय प्रकार के होने चाहिए, या वे ऐसी वस्तुएं होनी चाहिए जो एक __hash__विधि को लागू करती हैं। (लुआ डॉक्स का सुझाव है कि यह स्वचालित रूप से ऑब्जेक्ट की आईडी को हैश / कुंजी के रूप में भी उत्परिवर्तित वस्तुओं के लिए उपयोग करता है और यह सुनिश्चित करने के लिए स्ट्रिंग इंटर्न पर निर्भर करता है कि समान वस्तुओं के लिए समान स्ट्रिंग मैप्स)।
पर्ल, जावास्क्रिप्ट, awk और कई अन्य भाषाओं में हैश, एसोसिएटिव सरणियों या जो भी उन्हें दी गई भाषा के लिए कहा जाता है, वे स्ट्रिंग (या पर्ल में "स्केलर) हैं। पर्ल $foo{1}, $foo{1.0}, and $foo{"1"}में सभी समान मैपिंग के संदर्भ हैं %foo--- कुंजी का मूल्यांकन स्केलर के रूप में किया जाता है!
JSON एक जावास्क्रिप्ट सीरियलाइजेशन तकनीक के रूप में शुरू हुआ। (JSON का अर्थ है J ava S cript O bject N otation ।) स्वाभाविक रूप से यह अपने मानचित्रण संकेतन के लिए शब्दार्थ को लागू करता है जो इसके मानचित्रण शब्दार्थ के अनुरूप होते हैं।
यदि आपके क्रमांकन के दोनों सिरे पायथन हो रहे हैं तो आप अचार का उपयोग करना बेहतर समझेंगे। यदि आपको वास्तव में JSON से इन मूल देशी वस्तुओं में वापस बदलने की आवश्यकता है, तो मुझे लगता है कि आपके पास कुछ विकल्प हैं। पहले आप try: ... except: ...किसी शब्दकोश की विफलता की स्थिति में किसी भी कुंजी को संख्या में बदलने की कोशिश कर सकते हैं । वैकल्पिक रूप से, यदि आप दूसरे छोर पर कोड (इस JSON डेटा के क्रमिक या जनरेटर) को जोड़ते हैं, तो आप इसे कुंजी मानों की प्रत्येक सूची पर JSON क्रमांकन कर सकते हैं --- जो उन्हें कुंजी की सूची के रूप में प्रदान करते हैं। (तब आपका पायथन कोड सबसे पहले कुंजी की सूची पर पुनरावृति करेगा, उन्हें देशी पायथन ऑब्जेक्ट में त्वरित / डिसेररलाइज़ करना ... और फिर मैपिंग से मानों को एक्सेस करने के लिए उपयोग करें)।