জেএসএন নিম্নলিখিত তথ্য কাঠামো (জাভা সমতুল্য) সমর্থন করে: স্কেলার, অ্যারে / তালিকা এবং মানচিত্র।
এ Set
জেএসওএন-এ-বক্স-অফ-বক্স সমর্থন করে না।
আমি JSON এ একটি সেট উপস্থাপনের বিভিন্ন উপায় সম্পর্কে ভেবেছিলাম:
[1] - একটি তালিকা হিসাবে
তবে একটি তালিকার নিজস্ব ক্রম রয়েছে, সুতরাং নিম্নলিখিত দুটি তালিকাগুলি, ["a", "b"]
এবং ["b", "a"]
তালিকার সমান নয়, তবে সেগুলি সেট হিসাবে সমান হওয়া উচিত।
[2] - একটি মানচিত্র হিসাবে
মানচিত্রের কী-সেটটি ব্যবহার করুন এবং মানগুলি উপেক্ষা করুন।
তবে আবার, মান তুলনা ব্যবহার করে, দুটি মানচিত্রের মতো নয়:
{"a": "foo", "b": "bar"}
, {"a": null, "b": null}
[3] - একটি মান হিসাবে একটি বিশেষ মান
একটি স্ক্যালার নিন, বলুন 0
বা null
মানচিত্রের প্রতিটি কী এর মান হতে বাধ্য করুন:
{"a": 0, "b": 0}
এই পদ্ধতিতে, মান তুলনা সরঞ্জামগুলির আওতায়, কী অর্ডার পরিবর্তন করা হলেও বস্তুগুলি সমান।
তবে এই কৌশলটি অপ্রাসঙ্গিক ডেটা সহ জেএসওএন ডকুমেন্টকে দূষিত করে।
[4] - একটি আদেশ তালিকা হিসাবে
প্রথম পরামর্শটিতে ফিরে আসুন তবে এবার আদেশের তালিকা হিসাবে। এই ধরণের তুলনা সমস্যা সমাধান করে।
তবে, বাছাইয়ের জটিলতাটিও আমাদের মনে রাখা উচিত, এবং সেই মানচিত্রের স্বরলিপিটি সদৃশগুলি হ্যান্ডল করে, যখন একটি সাজানো তালিকাটি তা করে না। উদাহরণ:
{"a": 400, "a": 9}
হিসাবে পরিচালনা করা হয় {"a": 9}
, কিন্তু ["g", "g"]
সর্বদা হবে ["g", "g"]
।
সব বলার পরেও, আমার কাছে মনে হয় তালিকার স্বরলিপিটি আরও পরিষ্কার null
।
আপনি কি মনে করেন? আপনি কীভাবে জেএসএনে একটি সেট উপস্থাপন করবেন?
পুনশ্চ
এই প্রশ্নটি নোট করুন এটি নিছক জেএসওএন সম্পর্কে। আমি জানি যে ইয়ামলের মতো অন্যান্য ফর্ম্যাটগুলিও উপলব্ধ। এখনও ...