JSON থেকে YAML কনভার্টার

Kubernetes, Docker Compose, GitHub Actions বা Ansible-এর জন্য JSON-কে পরিষ্কার, মানুষের পড়ার উপযোগী YAML-এ রূপান্তর করুন, ইনডেন্টেশন, স্টাইল ও কোটের ওপর পূর্ণ নিয়ন্ত্রণসহ।

ব্রাউজারেই চলেসাইন-আপ লাগে নাকিছুই আপলোড হয় না

JSON আউটপুট

JSON থেকে YAML কীভাবে ব্যবহার করবেন

  1. বাঁ দিকের বক্সে JSON পেস্ট করুন বা একটি .json ফাইল খুলুন।
  2. টাইপ করার সাথে সাথে ডান দিকে YAML দেখা যায়।
  3. ইনডেন্ট (২ বা ৪ স্পেস) ও স্টাইল বেছে নিন: block (প্রতি লাইনে একটি কী) অথবা নির্দিষ্ট নেস্টিং লেভেল থেকে flow ({a: 1}/[x, y])।
  4. একটি কোটিং স্টাইল বেছে নিন, আর বর্ণানুক্রম চাইলে কী সাজান টিক দিন।
  5. YAML কপি বা ডাউনলোড করুন। অবৈধ JSON লাইন, কলাম ও সম্ভাব্য কারণসহ জানানো হয়।

কেন JSON থেকে YAML-এ রূপান্তর করবেন?

JSON মেশিন ও API-এর জন্য আদর্শ, কিন্তু YAML মানুষের পড়া ও সম্পাদনার জন্য সহজ: কোনো বন্ধনী নেই, কোট বাধ্যতামূলক নয় এবং কমেন্ট সমর্থিত। Kubernetes, Helm, Docker Compose, GitHub Actions, GitLab CI ও Ansible-সহ বেশিরভাগ ইনফ্রাস্ট্রাকচার টুল YAML-এ কনফিগার করা হয়, অথচ আপনার শুরুর ডেটা (API আউটপুট, kubectl get -o json, Terraform state) প্রায়ই JSON।

Block বনাম flow স্টাইল

Block স্টাইল প্রতিটি কী ও তালিকা-আইটেম আলাদা লাইনে রাখে এবং কনফিগ ফাইলের প্রচলিত পছন্দ। Flow স্টাইল JSON-এর মতো ইনলাইন {} ও [] ব্যবহার করে এবং ছোট শেষ-স্তরের কাঠামো সংক্ষিপ্ত রাখে। “লেভেল ২ থেকে Flow” উপরের দুই লেভেল block স্টাইলে রাখে এবং আরও গভীর সবকিছু ইনলাইন করে, যা পোর্ট বা env var-এর মতো ছোট অবজেক্টের লম্বা তালিকার জন্য ভালো কাজ করে।

নিরাপদ কোটিং

যেসব string YAML পার্সার ভুল বুঝতে পারে সেগুলো স্বয়ংক্রিয়ভাবে কোট করা হয়: 'no', 'on', '1.0', 'null'-এর মতো মান, শুরুতে * বা & থাকা string, এবং : যুক্ত string। আপনার স্টাইল গাইড প্রতিটি string কোট করতে বললে সবসময় সিঙ্গেল বা সবসময় ডাবল বেছে নিন।

YAML 1.1 বনাম 1.2-এর ফাঁদ

এই কনভার্টার বর্তমান স্পেসিফিকেশন YAML 1.2 মেনে চলে। অনেক পুরনো টুল (PyYAML, Ruby-র Psych, Kubernetes ও Ansible-এর কিছু সংস্করণ) এখনো YAML 1.1 পড়ে, যেখানে নিয়ম আলাদা:

  • নরওয়ে সমস্যা: YAML 1.1-এ country: no মানে false, তাই নরওয়ের দেশ-কোড NO হারিয়ে যায়। yes, on, off, y ও n-এর ক্ষেত্রেও একই। YAML 1.2 শুধু true ও false-কে boolean ধরে।
  • অক্টাল সংখ্যা: 1.1-এ 0755 অক্টাল, কিন্তু 1.2-এ সাধারণ দশমিক; 1.2 ব্যবহার করে 0o755। নিরাপদ থাকতে ফাইল মোড কোট করুন।
  • ষাটভিত্তিক সংখ্যা: 1.1-এ 22:30 সংখ্যা 1350 হিসেবে পার্স হতে পারে। সময় ও "8080:80"-এর মতো পোর্ট ম্যাপিং কোট করুন।

JSON → YAML দিকে দ্ব্যর্থক string ('no', 'on', 'y') স্বয়ংক্রিয়ভাবে কোট করা হয়, তাই তৈরি YAML দুটি সংস্করণেই একই অর্থে পড়া হয়।

সচরাচর জিজ্ঞাসিত প্রশ্ন

রূপান্তর কি ক্ষতিহীন?
হ্যাঁ। প্রতিটি JSON ডকুমেন্ট বৈধ YAML 1.2, আর তৈরি YAML পার্স করলে হুবহু একই ডেটা পাওয়া যায়। অদলবদল চেপে যাচাই করতে পারেন।
কিছু string কোট করা আর কিছু নয় কেন?
শুধু প্রয়োজন হলে বেছে নিলে কেবল সেখানেই কোট যোগ হয় যেখানে কোট ছাড়া মানের অর্থ বদলে যেত, যেমন 'yes', '123' বা বিশেষ অক্ষরযুক্ত string। পড়ার সুবিধার জন্য বাকি সব সাধারণ রাখা হয়।
আউটপুটে কি কমেন্ট যোগ করা যায়?
JSON-এ কমেন্ট নেই, তাই রূপান্তর করার মতো কিছু নেই, তবে কপি করার পর YAML-এ # comments যোগ করতে পারেন।
কী-এর ক্রম কি বদলায়?
না। কী সাজান টিক না দিলে কী-গুলো JSON-এর ক্রমেই থাকে।
আমার ডেটা কি গোপন থাকে?
হ্যাঁ। কনভার্টার আপনার ব্রাউজারে চলে এবং আপনার ইনপুট নিয়ে কোনো নেটওয়ার্ক রিকোয়েস্ট করে না।

সম্পর্কিত টুল