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

JSON কী এবং কোথায় এটি ব্যবহৃত হয়
JSON (JavaScript Object Notation) একটি কঠোর, ব্র্যাকেট-ও-ব্রেস ফরম্যাট যা প্রথমে মেশিনের জন্য তৈরি। প্রতিটি অবজেক্ট {}-এ মোড়ানো, প্রতিটি অ্যারে []-এ, কী ও স্ট্রিং ভ্যালু ডাবল-কোটেড, এবং আইটেমগুলো কমা দিয়ে আলাদা করা। এটি REST ও GraphQL API-এর ডিফল্ট ওয়্যার ফরম্যাট, বেশিরভাগ ওয়েবহুকের বডি, NoSQL ডকুমেন্টের আকার, এবং আপনার fetch কল যা ফেরত দেয়। প্রায় প্রতিটি ভাষা এটি সরাসরি পার্স করে, যে কারণেই এটি API স্তর জিতেছে: JavaScript-এ JSON.parse, Python স্ট্যান্ডার্ড লাইব্রেরিতে json, এবং সর্বত্র সমতুল্য। বিনিময়ে JSON হাতে লিখতে বিস্তারিত এবং মন্তব্য নিষিদ্ধ করে, তাই এটি এমন ফাইলের জন্য দুর্বল ফরম্যাট যা একজন মানুষ সারাদিন সম্পাদনা করে।
YAML কী এবং কোথায় এটি ব্যবহৃত হয়
YAML (YAML Ain't Markup Language) বিপরীত অগ্রাধিকারের জন্য ডিজাইন করা হয়েছিল: প্রথমে মানুষ। এটি ব্রেস ও কোট বাদ দেয়, নেস্টিং প্রকাশ করতে ইনডেন্টেশন ব্যবহার করে, এবং # দিয়ে মন্তব্য লিখতে দেয়। এই পঠনযোগ্যতাই এটিকে কনফিগারেশনের সাধারণ ভাষায় পরিণত করেছে। Docker Compose ফাইল, Kubernetes ম্যানিফেস্ট, GitHub Actions ও GitLab CI ওয়ার্কফ্লো, Ansible প্লেবুক, এবং অগণিত অ্যাপ কনফিগ ফাইল সবই YAML। একটি সাধারণ YAML ডকুমেন্ট সমতুল্য JSON-এর চেয়ে লক্ষণীয়ভাবে ছোট এবং একটি পুল রিকোয়েস্টে ডিফ করা অনেক সহজ। এই কমনীয়তার মূল্য হলো ভঙ্গুরতা, যেখানেই রূপান্তর আকর্ষণীয় হয়ে ওঠে।
গুরুত্বপূর্ণ মূল পার্থক্যগুলো
তিনটি পার্থক্য প্রায় প্রতিটি রূপান্তর সিদ্ধান্তকে চালিত করে। প্রথমত, YAML-এ হোয়াইটস্পেস গুরুত্বপূর্ণ আর JSON-এ অর্থহীন। YAML স্পেস ব্যবহার করে — কখনো ট্যাব নয় — কাঠামো বোঝাতে, তাই একটি একক ভুল-সারিবদ্ধ স্পেস নীরবে একটি ডকুমেন্টের অর্থ পরিবর্তন করে দিতে পারে। JSON ইনডেন্টেশন নিয়ে একেবারেই চিন্তা করে না। দ্বিতীয়ত, YAML মন্তব্য সমর্থন করে আর JSON করে না। YAML-এর যেকোনো # মন্তব্য আপনি JSON তৈরি করলে সহজেই অদৃশ্য হয়ে যায়, কারণ এটি রাখার কোনো জায়গা নেই। তৃতীয়ত, YAML-এর সমৃদ্ধ, অন্তর্নিহিত টাইপিং আছে। এটি খুশিমনে তারিখ, টাইমস্ট্যাম্প এবং কয়েকটি বানানে নাল পড়ে, এবং কোট না করা ভ্যালু থেকে টাইপ অনুমান করে। JSON-এর একটি ছোট, স্পষ্ট টাইপ সেট আছে এবং কোনো অস্পষ্টতা নেই। এটাও লক্ষ্য করুন যে JSON টেকনিক্যালি YAML 1.2-এর একটি সাবসেট, যে কারণে বৈধ JSON সাধারণত YAML হিসেবে পরিষ্কারভাবে পার্স হয়, কিন্তু উল্টোটা নিশ্চিত নয়।

রূপান্তরের যেসব সমস্যা লক্ষ্য রাখতে হবে
রাউন্ড-ট্রিপিং সবসময় লসলেস নয়, আর কোথায় জিনিস ভাঙে তা জানা ভালো:
- নরওয়ে সমস্যা। YAML 1.1 নিয়মের অধীনে, কোট না করা
NOবুলিয়ানfalseহিসেবে পার্স হয়, এবংyes,on, ওoffও বুলিয়ানে পরিণত হয়। একটি দেশের কোড বা একটি সুইচ লেবেল আপনার চোখে পড়ার আগেইtrue/false-এ পাল্টে যেতে পারে। যে ভ্যালুগুলো আপনি স্ট্রিং হিসেবে বোঝাতে চান সেগুলো কোট করুন। - সংখ্যা জবরদস্তি।
3.10-এর মতো একটি সংস্করণ তার শেষের শূন্য হারিয়ে3.1হয়ে যেতে পারে, আর1.0আপনি টেক্সট চাইলেও একটি সংখ্যায় পরিণত হয়। সংস্করণ স্ট্রিং ও আইডি কোট করুন। - অ্যাংকর ও এলিয়াস উধাও হয়ে যায়। YAML-এর
&anchorও*aliasরেফারেন্সের কোনো JSON সমতুল্য নেই। একটি ভালো কনভার্টার সেগুলোকে তাদের পূর্ণ ভ্যালুতে সম্প্রসারিত করে, তাই ডেটা সঠিক থাকে কিন্তু ডুপ্লিকেশন-বিরোধী কৌশলটি হারিয়ে যায় — JSON থেকে YAML থেকে JSON মূল অ্যাংকর পুনর্নির্মাণ করবে না। - মন্তব্য ও ব্লক স্কেলার। JSON-এ যাওয়ার সময় মন্তব্য বাদ পড়ে। মাল্টি-লাইন ব্লক স্কেলার (
|ও>)\nএস্কেপ সহ সাধারণ JSON স্ট্রিং-এ পতিত হয়, তাই ভিজ্যুয়াল ফরম্যাটিং উদ্দেশ্য হারিয়ে যায়। - YAML-এ ফিরে যাওয়ার সময় ইনডেন্টেশন। JSON ইনডেন্টেশন এনকোড করে না, তাই কনভার্টার একটি সামঞ্জস্যপূর্ণ স্টাইল বেছে নেয়। একটি ট্যাব-সংবেদনশীল টুলে পেস্ট করার আগে এটি পর্যালোচনা করুন।
কেন শুধু স্থানীয় হওয়াটা গুরুত্বপূর্ণ
কনফিগ ফাইল ও API পেলোড ঠিক সেই ধরনের জিনিস যা একটি র্যান্ডম সার্ভারে আপলোড করা উচিত নয়: এগুলোতে প্রায়ই হোস্টনেম, টোকেন, অভ্যন্তরীণ সার্ভিস নাম, বা গ্রাহক ডেটা থাকে। এই কনভার্টার পার্স-ও-এমিট ধাপটি আপনার ব্রাউজারে JavaScript দিয়ে চালায়। কিছুই ব্যাকএন্ডে পাঠানো হয় না, কিছুই লগ করা হয় না, এবং পেজ লোড হওয়ার পরে টুলটি অফলাইনেও কাজ করে। একটি Kubernetes সিক্রেট বা একটি CI ওয়ার্কফ্লো নিশ্চিন্তে পেস্ট করুন এই ভরসায় যে এটি আপনার মেশিনেই থাকবে।
সম্পর্কিত টুলিং প্রয়োজন? সম্পূর্ণ ডেটা কনভার্টার সেট ব্রাউজ করুন, JSON ফরম্যাটার দিয়ে অগোছালো ইনপুট পরিষ্কার করুন, এবং API জগৎ ও কনফিগ জগতের মধ্যে যাওয়ার প্রয়োজন হলেই এখানে ফিরে আসুন।
প্রায়শই জিজ্ঞাসিত প্রশ্ন
আমার ডেটা কি কোথাও আপলোড হয়?
না। রূপান্তরটি সম্পূর্ণভাবে আপনার ব্রাউজারে স্থানীয় JavaScript ব্যবহার করে ঘটে। আপনার JSON বা YAML কখনো সার্ভারে পাঠানো হয় না, তাই সিক্রেট ও কনফিগ ফাইল ব্যক্তিগত থাকে।
আমার YAML ভ্যালু true বা false কেন অপ্রত্যাশিতভাবে পরিবর্তিত হলো?
YAML 1.1 কোট না করা yes, no, on, ও off-এর মতো শব্দকে বুলিয়ান হিসেবে গণ্য করে — নরওয়ে সমস্যা। যেকোনো ভ্যালু যা আপনি স্ট্রিং হিসেবে বোঝাতে চান তা কোটে মুড়ে দিন যাতে এটি টেক্সট হিসেবে রূপান্তর সহ্য করে।
YAML-কে JSON-এ রূপান্তর করার সময় আমার মন্তব্যের কী হয়?
JSON-এ কোনো মন্তব্য সিনট্যাক্স নেই, তাই রূপান্তরের সময় সব হ্যাশ মন্তব্য বাদ দেওয়া হয়। নোট সংরক্ষণ করতে চাইলে, আপনার প্রামাণিক কপিটি YAML-এ রাখুন।
YAML অ্যাংকর ও এলিয়াস কি সংরক্ষিত থাকে?
এগুলো তাদের পূর্ণ ভ্যালুতে সম্প্রসারিত হয় কারণ JSON-এর কোনো রেফারেন্স মেকানিজম নেই। ডেটা সঠিক থাকে, কিন্তু আপনি YAML-এ ফিরে রূপান্তর করলে ডুপ্লিকেশন-বিরোধী কৌশলটি পুনরুদ্ধারযোগ্য নয়।
আমি কি YAML-কে JSON-এ ও JSON-কে YAML-এ উভয়ই রূপান্তর করতে পারি?
হ্যাঁ, টুলটি উভয় দিকেই কাজ করে। YAML পাওয়ার জন্য JSON পেস্ট করুন, বা JSON পাওয়ার জন্য YAML পেস্ট করুন, আর কনভার্টার অন্য ফরম্যাটটি শনাক্ত ও তৈরি করে।
আমি ট্যাব ব্যবহার করলে YAML কেন ভেঙে যায়?
YAML-এ ইনডেন্টেশনের জন্য স্পেস প্রয়োজন এবং ট্যাব প্রত্যাখ্যান করে। একটি পেস্ট পার্স করতে ব্যর্থ হলে, ট্যাব অক্ষরগুলো স্পেস দিয়ে প্রতিস্থাপন করুন এবং ইনডেন্টেশন সামঞ্জস্যপূর্ণ রাখুন।
