JSON, YAML, CSV: কখন কোনটি ব্যবহার করবেন এবং কীভাবে রূপান্তর করবেন
আপনি একটি ডেটাসেট ডাউনলোড করলেন এবং সেটা CSV-তে। আপনার API JSON রিটার্ন করে। আপনার কনফিগারেশন ফাইল YAML-এ। একজন সহকর্মী আপনাকে একটি JSON ফাইল পাঠিয়ে স্প্রেডশিটে চাইলেন। আরেকজন সহকর্মী একটি YAML কনফিগ দিলেন এবং আপনার সেটা অন্য একটি টুলের জন্য JSON-এ দরকার।
ডেটা ফরম্যাট রূপান্তর সেই ধরনের কাজগুলোর মধ্যে যা মনে হয় সহজ যতক্ষণ না আপনি আসলে এটা করছেন। কখন কোন ফরম্যাট ব্যবহার করতে হবে এবং কীভাবে এদের মধ্যে রূপান্তর করতে হবে তা বুঝলে সত্যিই সময় বাঁচে।
তিনটি ফরম্যাটের সংক্ষিপ্ত পরিচিতি
JSON (JavaScript Object Notation)
{
"name": "Alice",
"age": 30,
"skills": ["Python", "SQL", "Docker"],
"address": {
"city": "Berlin",
"country": "Germany"
}
}
এটা কী: স্ট্রাকচার্ড ডেটার জন্য একটি টেক্সট ফরম্যাট যা অবজেক্ট (কী-ভ্যালু পেয়ার), অ্যারে (ক্রমবদ্ধ তালিকা), স্ট্রিং, সংখ্যা, বুলিয়ান এবং null সমর্থন করে।
শক্তি: মেশিন-পাঠযোগ্য, প্রতিটি প্রোগ্রামিং ভাষায় ব্যাপকভাবে সমর্থিত, নেস্টেড ডেটা স্বাভাবিকভাবে হ্যান্ডেল করে, কড়া সিনট্যাক্স অস্পষ্টতা প্রতিরোধ করে।
দুর্বলতা: ভার্বোস (অনেক ব্রেস, ব্র্যাকেট এবং কোট), YAML-এর মতো মানুষের পাঠযোগ্য নয়, কমেন্ট সমর্থন করে না।
YAML (YAML Ain't Markup Language)
name: Alice
age: 30
skills:
- Python
- SQL
- Docker
address:
city: Berlin
country: Germany
এটা কী: একটি মানুষ-বান্ধব ডেটা সিরিয়ালাইজেশন ফরম্যাট যা ব্রেস এবং ব্র্যাকেটের বদলে ইন্ডেন্টেশন ব্যবহার করে। এটি JSON-এর সুপারসেট, অর্থাৎ বৈধ JSON স্বয়ংক্রিয়ভাবে বৈধ YAML।
শক্তি: অত্যন্ত পাঠযোগ্য, কমেন্ট সমর্থন করে, কম ভিজুয়াল নয়েজ, কনফিগারেশন ফাইলের জন্য চমৎকার।
দুর্বলতা: ইন্ডেন্টেশন-সংবেদী (ভুল স্পেসিংয়ে সহজে ভাঙে), কিছু আশ্চর্যজনক পার্সিং আচরণ, JSON-এর চেয়ে ধীরে পার্স হয়।
CSV (Comma-Separated Values)
name,age,city,country
Alice,30,Berlin,Germany
Bob,25,London,UK
Charlie,35,Paris,France
এটা কী: একটি ফ্ল্যাট টেক্সট ফরম্যাট যেখানে প্রতিটি লাইন একটি সারি এবং একটি সারির ভিতরে মানগুলো কমা (বা কখনো সেমিকোলন বা ট্যাব) দিয়ে আলাদা করা হয়।
শক্তি: সার্বজনীন (প্রতিটি স্প্রেডশিট, ডেটাবেস এবং ডেটা টুল এটি সমর্থন করে), ট্যাবুলার ডেটার জন্য কম্প্যাক্ট, পড়তে ও তৈরি করতে সহজ।
দুর্বলতা: নেস্টেড ডেটা সমর্থন করে না, ডেটা টাইপ নেই (সবকিছু স্ট্রিং), বিশেষ অক্ষরের জন্য কোনো স্ট্যান্ডার্ড নেই, ফ্ল্যাট টেবিলে সীমাবদ্ধ।
আপনি কি জানতেন? YAML প্রযুক্তিগতভাবে JSON-এর সুপারসেট। এর মানে যেকোনো বৈধ JSON ডকুমেন্ট স্বয়ংক্রিয়ভাবে একটি বৈধ YAML ডকুমেন্ট। আপনি JSON কে YAML পার্সারে পেস্ট করতে পারেন এবং এটা কাজ করবে। বিপরীতটা সত্য নয় — YAML-এর বৈশিষ্ট্যগুলো (কমেন্ট, অ্যাঙ্কর, মাল্টি-লাইন স্ট্রিং) JSON-এ সমতুল্য নেই।
কখন কোনটি ব্যবহার করবেন
| ব্যবহার | সেরা ফরম্যাট | কেন |
|---|---|---|
| API অনুরোধ এবং প্রতিক্রিয়া | JSON | ইন্ডাস্ট্রি স্ট্যান্ডার্ড, প্রতিটি ভাষায় নেটিভ সাপোর্ট |
| কনফিগারেশন ফাইল | YAML | মানুষের পাঠযোগ্য, ডকুমেন্টেশনের জন্য কমেন্ট সমর্থন করে |
| স্প্রেডশিট ডেটা | CSV | সরাসরি Excel, Google Sheets ইত্যাদিতে খোলা যায় |
| ডেটাবেস এক্সপোর্ট | CSV | ফ্ল্যাট ট্যাবুলার ডেটা সরাসরি সারি ও কলামে ম্যাপ হয় |
| জটিল নেস্টেড ডেটা | JSON বা YAML | CSV নেস্টিং উপস্থাপন করতে পারে না |
| সিস্টেমের মধ্যে ডেটা আদান-প্রদান | JSON | দ্ব্যর্থহীন পার্সিং, কড়া স্পেসিফিকেশন |
| মানুষের সম্পাদিত কনফিগ | YAML | হাতে পড়তে ও সম্পাদনা করতে সহজ |
| সাধারণ ডেটা তালিকা | CSV | হালকা, কোনো অতিরিক্ত ওভারহেড নেই |
ফরম্যাটের মধ্যে রূপান্তর
JSON থেকে YAML
এটি সবচেয়ে সাধারণ কনফিগারেশন রূপান্তর। আপনার কাছে একটি টুল থেকে JSON কনফিগ আছে এবং অন্যটির জন্য YAML দরকার। রূপান্তরটি সরল কারণ YAML সবকিছু সমর্থন করে যা JSON করে।
{"server": {"host": "0.0.0.0", "port": 8080}}
হয়ে যায়:
server:
host: 0.0.0.0
port: 8080
YAML থেকে JSON
YAML থেকে JSON-এও সহজ, কিন্তু আপনি কমেন্ট হারান (JSON কমেন্ট সমর্থন করে না) এবং ফলাফল আরো ভার্বোস হয়।
JSON থেকে CSV
এটি ফ্ল্যাট JSON অ্যারের (একই কী সহ অবজেক্টের অ্যারে) জন্য ভালো কাজ করে। প্রতিটি অবজেক্ট একটি সারি হয়, এবং প্রতিটি কী একটি কলাম হেডার হয়।
[
{"name": "Alice", "age": 30},
{"name": "Bob", "age": 25}
]
হয়ে যায়:
name,age
Alice,30
Bob,25
সতর্কতা JSON-থেকে-CSV রূপান্তর ভেঙে পড়ে যখন JSON-এ নেস্টেড অবজেক্ট বা অ্যারে থাকে। CSV ফ্ল্যাট — এটির একটি "skills" অ্যারে বা নেস্টেড "address" অবজেক্ট উপস্থাপন করার কোনো উপায় নেই। নেস্টেড ডেটা হয় ফ্ল্যাটেন করতে হবে (address.city, address.country আলাদা কলাম হিসেবে) অথবা CSV সেলের মধ্যে স্ট্রিং হিসেবে সিরিয়ালাইজ করতে হবে।
CSV থেকে JSON
প্রতিটি সারি একটি অবজেক্ট হয়, কলাম হেডারগুলো কী হিসেবে। সাধারণ ট্যাবুলার ডেটার জন্য এটি পরিষ্কার।
CSV থেকে YAML
কম সাধারণ, কিন্তু একই যুক্তি অনুসরণ করে: প্রতিটি সারি একটি YAML ম্যাপিং হয়, এবং পুরো ফাইলটি একটি YAML সিকোয়েন্স হয়।
সাধারণ সমস্যা
CSV এনকোডিং সমস্যা
CSV ফাইল বিভিন্ন ক্যারেক্টার এনকোডিং ব্যবহার করতে পারে (UTF-8, Latin-1, Windows-1252)। যদি আপনি একটি CSV খুলে "München"-এর বদলে "München" এর মতো বিকৃত অক্ষর দেখেন, এটা একটি এনকোডিং অমিল। সবসময় সম্ভব হলে UTF-8 ব্যবহার করুন।
CSV ডেলিমিটার বিভ্রান্তি
সব CSV কমা ব্যবহার করে না। ইউরোপীয় CSV প্রায়ই সেমিকোলন ব্যবহার করে কারণ কমা অনেক ইউরোপীয় সংখ্যা ফরম্যাটে দশমিক বিভাজক হিসেবে ব্যবহৃত হয়। ট্যাব-বিভাজিত মান (TSV) আরেকটি সাধারণ বৈকল্পিক।
YAML ইন্ডেন্টেশন ত্রুটি
YAML স্ট্রাকচার সংজ্ঞায়িত করতে ইন্ডেন্টেশন ব্যবহার করে (স্পেস, কখনো ট্যাব নয়)। অসামঞ্জস্যপূর্ণ ইন্ডেন্ট, বা ট্যাব ও স্পেস মিশ্রিত করলে পার্সিং ত্রুটি বা নীরব ভুল ব্যাখ্যা হয়। প্রতি ইন্ডেন্ট লেভেলে ঠিক ২টি স্পেস ব্যবহার করুন এবং আপনার এডিটরকে ট্যাবের বদলে স্পেস ইনসার্ট করতে কনফিগার করুন।
সতর্কতা YAML-এ, no স্ট্রিংটি বুলিয়ান false হিসেবে পার্স হয়, এবং yes পার্স হয় true হিসেবে। 1.0 স্ট্রিংটি সংখ্যা হিসেবে পার্স হয়। যদি আপনি আক্ষরিক স্ট্রিং "no," "yes," বা "1.0" বোঝাতে চান, তাহলে কোট দিতে হবে: "no", "yes", "1.0"। এটি YAML-এর সবচেয়ে কুখ্যাত ফাঁদগুলোর একটি।
JSON ট্রেইলিং কমা
JSON ট্রেইলিং কমা অনুমতি দেয় না। এটি JavaScript-এ বৈধ কিন্তু JSON-এ অবৈধ:
{"name": "Alice", "age": 30,} // অবৈধ JSON: ট্রেইলিং কমা
বড় ফাইলের কর্মক্ষমতা
খুব বড় ডেটাসেটের জন্য (মিলিয়ন সারি), CSV JSON বা YAML-এর চেয়ে বেশি দক্ষ কারণ প্রতি রেকর্ডে এর ন্যূনতম ওভারহেড থাকে। JSON প্রতিটি মানের জন্য ব্রেস এবং কোট যোগ করে, যা বড় ট্যাবুলার ডেটার জন্য ফাইলের আকার উল্লেখযোগ্যভাবে বৃদ্ধি করে।
রূপান্তরের জন্য ব্যবহারিক টুল
দ্রুত, একবারের রূপান্তরের জন্য, ব্রাউজার-ভিত্তিক টুল সবচেয়ে দ্রুত বিকল্প। আপনি আপনার ডেটা পেস্ট বা আপলোড করুন, টার্গেট ফরম্যাট নির্বাচন করুন এবং তাৎক্ষণিকভাবে ফলাফল পান।
পরামর্শ তাৎক্ষণিকভাবে JSON, YAML এবং CSV ফরম্যাটের মধ্যে রূপান্তর করুন: কীভাবে ডেটা ফরম্যাট রূপান্তর করবেন। আপনার ডেটা পেস্ট করুন, টার্গেট ফরম্যাট নির্বাচন করুন, এবং ফলাফল কপি বা ডাউনলোড করুন।
বিশেষভাবে JSON-এর সাথে কাজ করার জন্য, একটি ফরম্যাটার যা আপনার JSON ভ্যালিডেট এবং প্রিটি-প্রিন্ট করে তা অমূল্য:
- JSON Formatter — JSON ভ্যালিডেট, ফরম্যাট এবং মিনিফাই করুন
- JSON to CSV Converter — JSON অ্যারেকে CSV-তে রূপান্তর করুন
- YAML-JSON Converter — YAML এবং JSON-এর মধ্যে রূপান্তর করুন
- CSV Viewer — CSV ফাইল দেখুন এবং অন্বেষণ করুন
এখনই আপনার ডেটা রূপান্তর করুন:
সব টুল বিনামূল্যে এবং সরাসরি আপনার ব্রাউজারে কাজ করে।