18Docs

CSV বনাম JSON বনাম YAML বনাম XML

CSV, JSON, YAML আর XML - সবগুলোই স্ট্রাকচার্ড ডেটা সেভ করে, কিন্তু এগুলো আলাদা আলাদা কাজের জন্য বানানো। সঠিকটা বেছে নেওয়া - আর এগুলো কীভাবে কনভার্ট হয় সেটা জানা - স্প্রেডশিট, কোড, কনফিগ আর API-এর মধ্যে ডেটা নেওয়ার সময় অনেক ঝামেলা বাঁচায়।

প্রতিটা ফরম্যাট কোন কাজে ভালো

CSV হলো একটা ফ্ল্যাট টেবিল: সারি আর কলাম, এর বেশি কিছু না। এটা স্প্রেডশিট আর টেবিল আকারের এক্সপোর্টের জন্য একদম উপযুক্ত, আর প্রায় সব টুলই এটা পড়তে পারে - কিন্তু এতে নেস্টিং বা হায়ারার্কি দেখানো যায় না। JSON হলো API আর আধুনিক অ্যাপের ভাষা: কমপ্যাক্ট, নেস্টেড অবজেক্ট আর অ্যারে সাপোর্ট করে, আর কোডের জন্য পার্স করা সহজ। YAML হলো JSON-এর বেশি মানুষ-বান্ধব কাজিন, ব্র্যাকেটের বদলে ইনডেন্টেশন ব্যবহার করে, এই কারণেই কনফিগারেশন ফাইলে এটাই বেশি চলে। XML হলো সেই বিস্তারিত, খুব বেশি স্ট্রাকচার্ড বড়ভাই, যেটা এখনও এন্টারপ্রাইজ সিস্টেম, ডকুমেন্ট ফরম্যাট আর পুরনো API-তে দেখা যায়।

এগুলোর মধ্যে পরিষ্কারভাবে কনভার্ট করা

ফ্ল্যাট ডেটা কনভার্ট করা সহজ: একটা CSV টেবিল খুব সহজেই JSON অবজেক্টের একটা অ্যারে, YAML, বা XML রেকর্ডে বদলে যায়। ঝামেলাটা দেখা দেয় নেস্টিংয়ের সাথে - JSON, YAML আর XML যে নেস্টেড স্ট্রাকচার দেখাতে পারে সেটা CSV দেখাতে পারে না, তাই একটা গভীরভাবে নেস্টেড JSON-কে CSV-তে কনভার্ট করা মানে সেটাকে ফ্ল্যাট করে ফেলা, যাতে হায়ারার্কি হারিয়ে যেতে পারে। উল্টোদিকে, CSV থেকে JSON-এ যাওয়াটা সাধারণত পরিষ্কারই হয়।

কনভার্ট করার সময়, টাইপ আর এনকোডিং খেয়াল রাখুন: সংখ্যা, বুলিয়ান আর তারিখ ঠিক নিজেদের টাইপেই থাকা উচিত, আর কমা বা বিশেষ ক্যারেক্টার থাকা টেক্সটে ঠিকভাবে কোটেশন দরকার হয়। একটা ভালো কনভার্টার এটা নিজেই সামলে নেয়, আর এটা ব্রাউজারে চালালে সংবেদনশীল হতে পারে এমন ডেটা কোনো সার্ভারে যায় না।

প্রায়ই জিজ্ঞাসিত প্রশ্ন

আমার নেস্টেড JSON কেন CSV-তে পরিষ্কারভাবে কনভার্ট হচ্ছে না?
CSV একটা ফ্ল্যাট টেবিল, তাই এতে নেস্টিং দেখানো যায় না। নেস্টেড JSON-কে কলামে বসানোর জন্য ফ্ল্যাট করতে হয়, যাতে হায়ারার্কির কিছুটা হারিয়ে যেতে পারে।
কনফিগারেশন ফাইলের জন্য কোন ফরম্যাটটা সবচেয়ে ভালো?
কনফিগের জন্য YAML জনপ্রিয়, কারণ এর ইনডেন্টেশন-বেসড স্টাইল মানুষের পড়তে আর এডিট করতে সহজ; টুলিং যেখানে এটাই পছন্দ করে সেখানে JSON-ও কমন।