JSON ↔ YAML ও XML রূপান্তরের সীমানা
JSON কীভাবে YAML-এর সাবসেট — এই দাবি কেবল এক দিক নিশ্চিত করে, আর XML-এর কোনো সরকারি JSON ম্যাপিং নেই — সবই প্রথার উপর নির্ভরশীল।
JSON ও YAML, XML, CSV, TypeScript, Java, Go এবং SQL-এর মধ্যে রূপান্তর কখনোই ক্ষতিহীন নয়। আসল বিষয় হলো ক্ষতি কোথায় হচ্ছে তা স্পষ্ট করা।
8টি নিবন্ধJSON কীভাবে YAML-এর সাবসেট — এই দাবি কেবল এক দিক নিশ্চিত করে, আর XML-এর কোনো সরকারি JSON ম্যাপিং নেই — সবই প্রথার উপর নির্ভরশীল।
CSV দ্বিমাত্রিক, JSON গাছের আকারের। রূপান্তরের কঠিন অংশ কোড নয় — আগে থেকেই ঠিক করা অ্যারে কীভাবে ফ্ল্যাট হবে আর টাইপ কীভাবে সংরক্ষিত থাকবে।
নেস্টেড কাঠামো, অসামঞ্জস্যপূর্ণ ফিল্ড আর অ্যারের অ্যারে — এখানেই JSON-থেকে-স্প্রেডশিট রূপান্তর ভাঙে। ফলাফল পাওয়ার সময় অনুযায়ী সাজানো চারটি পদ্ধতি, প্রতিটির সমঝোতাসহ।
JSON-কে SQL INSERT বানাতে নেস্টেড টেবিল বিভাজন, NULL বনাম অনুপস্থিত, এস্কেপিং ও ডায়ালেক্টের ফাঁক লুকিয়ে থাকে। প্রতিটি ফাঁদের জন্য চালানোযোগ্য স্টেটমেন্ট ও তুলনা টেবিল।
নমুনা JSON থেকে ইন্টারফেস জেনারেট করা অর্ধেক কাজ: ঐচ্ছিক ফিল্ড, null, ইউনিয়ন, তারিখ ও বড় ইন্টিজার মানুষের হাত পেতে হয়, আর টাইপ রানটাইমে কোনো যাচাই করে না।
টিউটোরিয়ালে সবচেয়ে বেশি কপি করা কমান্ড yq -P input.json > output.yaml আসলে yq v4-এ JSON-ই আউটপুট দেয়। yq v4.44.6, PyYAML 6.0.3 ও js-yaml দিয়ে 2.39 MB নমুনায় চার সেট পরিমাপ থেকে দেখানো হয়েছে যে আউটপুট ফরম্যাট ইনপুট এক্সটেনশনের হাতে, আর ব্যাচ রূপান্তর, উদ্ধৃতি, ইনডেন্টেশন ও বড় পূর্ণসংখ্যার নির্ভুলতার সঠিক লেখনীও দেওয়া হয়েছে।
একটি সত্যিকারের কনভার্টারে নয়টি পরীক্ষা: "প্রথম রেকর্ডের কী" কৌশল নিঃশব্দে ফিল্ড হারায়, null, অনুপস্থিতি ও খালি স্ট্রিং সব খালি সেলে পরিণত হয়, ২০ ডিজিটের পূর্ণসংখ্যা JSON.parse-এই নির্ভুলতা হারায়, আর কী-তে একটি ডট দুটি ভিন্ন পথকে একই কলামে সংঘর্ষে ফেলে। হেডার কীভাবে তৈরি হয়, কোন মানগুলো বিকৃত হয় এবং নিচের প্রান্তের ব্যবহার অনুযায়ী কৌশল কীভাবে বেছে নেবেন।
একটি JSON-to-Java জেনারেটর আসলে কী আউটপুট দেয় তার একটি বাস্তব দৃষ্টিভঙ্গি — সংখ্যা Double হয়ে যায়, নেস্টেড অবজেক্ট স্ট্যাটিক ইনার ক্লাস হয়, আর একটি Jackson অ্যানোটেশনও তৈরি হয় না। অর্থের নির্ভুলতা, ফিল্ড রিনেমিং, টাইপ ইরেজার, অজানা ফিল্ড এবং তারিখ — এই পাঁচটি জিনিস আপনাকেই যোগ করতে হবে, প্রতিটির জন্য কপি-পেস্টযোগ্য কোডসহ।