JSON निम्नलिखित डेटा संरचनाओं (जावा समकक्ष) का समर्थन करता है: स्केलर, एरे / सूची और मानचित्र।
Set
JSON में ए -आउट-द-बॉक्स समर्थित नहीं है।
मैंने JSON में एक सेट का प्रतिनिधित्व करने के कई तरीकों के बारे में सोचा:
[१] - एक सूची के रूप में
हालाँकि, एक सूची का अपना क्रम होता है, इसलिए निम्नलिखित दो सूचियाँ, ["a", "b"]
और ["b", "a"]
सूचियों के बराबर नहीं हैं, लेकिन वे सेट के बराबर होनी चाहिए।
[२] - नक्शे के रूप में
मानचित्र के कुंजी-सेट का उपयोग करें, और मूल्यों को अनदेखा करें।
लेकिन फिर से, मानक तुलना का उपयोग करते हुए, दो नक्शे के समान नहीं हैं:
{"a": "foo", "b": "bar"}
, {"a": null, "b": null}
[३] - एक मानचित्र के रूप में, एक विशेष मूल्य के साथ
एक स्केलर लें, कहें 0
या null
इसे मानचित्र में हर कुंजी का मान होने के लिए मजबूर करें:
{"a": 0, "b": 0}
इस तरह, मानक तुलना टूल के तहत, ऑब्जेक्ट समान होते हैं, भले ही कुंजी क्रम बदल दिया गया हो।
हालाँकि, यह तकनीक अप्रासंगिक डेटा के साथ JSON दस्तावेज़ को प्रदूषित करती है।
[४] - एक आदेशित सूची के रूप में
पहले सुझाव पर वापस जाएं, लेकिन इस बार एक आदेशित सूची के रूप में। इस तरह की तुलना समस्या को हल करती है।
हालांकि, हमें छंटाई की जटिलता को भी ध्यान में रखना चाहिए, और यह भी कि मानचित्र संकेतन डुप्लिकेट को संभालता है, जबकि एक क्रमबद्ध सूची नहीं है। उदाहरण:
{"a": 400, "a": 9}
के रूप में संभाला है {"a": 9}
, लेकिन ["g", "g"]
हमेशा रहेगा ["g", "g"]
।
यह सब कहने के बाद, यह मुझे लगता है कि सूची संकेतन स्पष्ट है, लेकिन मानचित्र संकेतन कुंजी दोहराव के लिए अधिक मजबूत है, और विशेष मूल्य के बारे में सुसंगत होना कठिन बना देता है (भले ही उसके null
लिए एक अच्छा विकल्प जैसा लगता है)।
तुम क्या सोचते हो? आप JSON में एक सेट का प्रतिनिधित्व कैसे करेंगे?
पुनश्च
ध्यान दें कि यह सवाल केवल JSON के बारे में है। मुझे पता है कि यमल जैसे अन्य प्रारूप उपलब्ध हैं। फिर भी...