JSON নাকি YAML
সংক্ষেপে: JSON ব্রেস দিয়ে আর YAML ইনডেন্টেশন দিয়ে সীমানা টানে: মেশিনে JSON, কনফিগ সম্পাদনা করা মানুষে YAML। কমেন্ট, অ্যাঙ্কর ও বহু-ডকুমেন্ট কাঠামো টেকে না।

মূল কথা: মেশিন-থেকে-মেশিন ডেটায় JSON আর মানুষ সম্পাদনা করে এমন কনফিগারেশনে YAML; কমেন্ট, মাল্টি-লাইন টেক্সট বা অ্যাঙ্কর দরকার হলে YAML পছন্দ করুন, আর প্রতিটি ভাষায় একই পেললোড দ্ব্যর্থতিহীনভাবে পার্স করতে হলে JSON।
পাশাপাশি
{
"server": {
"host": "127.0.0.1",
"port": 8080
}
}
server:
host: 127.0.0.1
port: 8080
একই কাঠামো। YAML বিরামচিহ্ন বাদ দেয় আর কমেন্টের জায়গা পায়।
কোথায় আলাদা
| JSON | YAML | |
|---|---|---|
| কাঠামো | ব্রেস ও কমা | ইনডেন্টেশন |
| কমেন্ট | নেই | আছে |
| স্ট্রিং | ডাবল কোট, এস্কেপ দরকার | সাধারণত খালি |
| মাল্টি-লাইন টেক্সট | \n এস্কেপ বা অ্যারে |
` |
| পুনর্ব্যবহার | নেই | অ্যাঙ্কর & ও alias * |
| একাধিক ডকুমেন্ট | অ্যারেতে মুড়ুন | --- বিভাজক |
| পার্স গতি | দ্রুত | ধীর, ইনডেন্টেশন নিয়ম |
| দ্ব্যর্থতা | খুব কম | no বুলিয়ান হিসেবে পার্স, এক ইনডেন্টেশন সরে যাওয়া |
শেষ সারিটাই YAML-এর আসল দাম। YAML 1.1-এ country: NO বুলিয়ান false দেয়, আর version: 1.0 ফ্লোট হয়ে যেতে পারে। JSON-এ অন্তর্নিহিত টাইপিং একেবারেই নেই।
বাছাই
JSON: রিকোয়েস্ট ও রেসপন্স বডি, সার্ভিস-থেকে-সার্ভিস মেসেজ, ডেটাবেসের JSON কলাম, প্রতিটি ভাষায় অভিন্নভাবে পার্স হতে হবে এমন যেকোনো কিছু।
YAML: যে ইকোসিস্টেমে এটি ডিফল্ট (Kubernetes, Ansible, GitHub Actions, Docker Compose); ব্যাখ্যা দরকারি কনফিগারেশন; সার্টিফিকেট, স্ক্রিপ্ট বা SQL-এর মতো দীর্ঘ টেক্সটপ্রধান ফাইল।
রূপান্তরে কী হারায়
YAML → JSON: সব কমেন্ট, অ্যাঙ্কর পুনর্ব্যবহার (ডুপ্লিকেটে প্রসারিত), প্রথমটি ছাড়া সব ডকুমেন্ট, আর তারিখ ও বুলিয়ানের মূল বানান।
JSON → YAML: স্ট্রিং/সংখ্যার পার্থক্য দুর্বল হয়, তাই "8080" ও 8080 — দুটোকেই সুরক্ষিত রাখতে স্পষ্ট কোট দরকার।
মাইগ্রেশন ও এককালীন পরিদর্শনে রূপান্তর করুন। একই ফাইল দুই ফরম্যাটে সমান্তরাল দৃশ্য হিসেবে রক্ষণাবেক্ষণ করবেন না।
সাধারণ প্রশ্ন
JSON ও YAML-এর মধ্যে কীভাবে ঠিক করব?
ফাইল কে পড়ে ও রক্ষণাবেক্ষণ করে তা দিয়ে শুরু করুন: প্রোগ্রাম জেনারেট করে, ভাষা সীমানা পার হয়, আর পূর্বানুমেয়ভাবে পার্স হতে হবে — JSON ব্যবহার করুন; মানুষ সম্পাদনা করে ও ফিল্ড ব্যাখ্যা বা দীর্ঘ মাল্টি-লাইন টেক্সট দরকার — YAML। এরা একে অন্যে রূপান্তর হয়, কিন্তু একই কনফিগারেশন দীর্ঘমেয়াদে দুই ফরম্যাটে রক্ষণাবেক্ষণ করবেন না।
YAML বেশি টাইপ দ্ব্যর্থতা তৈরি করে কেন?
YAML-এ অন্তর্নিহিত টাইপিং আছে, তাই NO, on বা 1.0-এর মতো মান বুলিয়ান, tanggal বা সংখ্যা হয়ে যেতে পারে। JSON-এ কেবল স্পষ্ট টাইপ: স্ট্রিং কোট করতে হয়, যা ভাষাভেদে পার্সিংকে বেশি পূর্বানুমেয় করে।
YAML থেকে JSON-এ রূপান্তরে কমেন্ট ও অ্যাঙ্কর টিকে থাকা উচিত?
না। YAML কমেন্ট, অ্যাঙ্কর ও একাধিক ডকুমেন্ট JSON-এ প্রকাশ করা যায় না; অ্যাঙ্কর ডুপ্লিকেট কন্টেন্টে প্রসারিত হয়। সংরক্ষণ দরকার হলে object round trip না করে Document API-যুক্ত YAML লাইব্রেরি ব্যবহার করুন।