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

YAML (Kubernetes manifest, Docker Compose, CI কনফিগ) পেস্ট করুন আর সঙ্গে সঙ্গে পরিষ্কার JSON পান। ত্রুটি একটি পয়েন্টারসহ ঠিক কোন লাইনে তা দেখায়।

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

JSON আউটপুট

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

  1. বাঁ দিকের বক্সে YAML পেস্ট করুন বা একটি .yaml/.yml ফাইল খুলুন।
  2. টাইপ করার সাথে সাথে ডান দিকে JSON দেখা যায়। আউটপুটের জন্য ২ স্পেস, ৪ স্পেস বা ট্যাব বেছে নিন।
  3. কী-গুলো বর্ণানুক্রমে সাজাতে কী সাজান টিক দিন। কনফিগ তুলনা করার সময় এটি কাজে আসে।
  4. YAML অবৈধ হলে স্ট্যাটাস বারে লাইন ও কলাম দেখায়, আর সমস্যাযুক্ত লাইনগুলো তার নিচে ^ চিহ্নসহ দেখা যায়।
  5. JSON কপি বা ডাউনলোড করুন, অথবা আবার YAML-এ রূপান্তর করতে অদলবদল চাপুন।

YAML কীভাবে JSON-এ ম্যাপ হয়

JSON হলো YAML 1.2-এর একটি উপসেট, তাই প্রতিটি YAML mapping একটি JSON অবজেক্ট, প্রতিটি sequence একটি অ্যারে, আর scalar-গুলো string, number, boolean বা null হয়। শুধু YAML-এর ফিচারগুলো রূপান্তরের সময় সমাধান করা হয়:

  • কমেন্ট (# …) বাদ দেওয়া হয়, কারণ JSON-এ কমেন্ট নেই।
  • Anchor ও alias (&base, *base, <<: *base) সম্পূর্ণ কপিতে প্রসারিত হয়।
  • টাইমস্ট্যাম্প, যেমন 2024-01-02, ISO 8601 string হয়।
  • একাধিক লাইনের string (| literal ও > folded ব্লক) \n escape-সহ সাধারণ string হয়।

মাল্টি-ডকুমেন্ট YAML

একটি ফাইলে --- দিয়ে আলাদা করা কয়েকটি YAML ডকুমেন্ট থাকতে পারে, যা Kubernetes manifest-এ প্রচলিত। JSON-এ এর কোনো সমতুল্য নেই, তাই কনভার্টার প্রতিটি ডকুমেন্টের জন্য একটি এলিমেন্টসহ একটি JSON অ্যারে ফেরত দেয় এবং স্ট্যাটাস বারে তা জানায়। শেষে একটিমাত্র --- থাকলে উপেক্ষা করা হয়।

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 দুটি সংস্করণেই একই অর্থে পড়া হয়।

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

আমার YAML কি কোথাও আপলোড হয়?
না। ওপেন-সোর্স js-yaml লাইব্রেরি দিয়ে আপনার ব্রাউজারেই পার্সিং হয়। সিক্রেট বা অভ্যন্তরীণ হোস্টনেমযুক্ত কনফিগ কখনো আপনার মেশিন ছেড়ে যায় না।
আমার YAML “bad indentation” ত্রুটি দেয় কেন?
YAML-এর নেস্টিং স্পেস দিয়ে নির্ধারিত হয়, আর ইনডেন্টেশনে ট্যাব অনুমোদিত নয়। নিশ্চিত করুন একই স্তরের কী-গুলো হুবহু একই সারিতে আছে এবং তালিকা-আইটেম (-) তাদের প্যারেন্ট কী-এর নিচে সুসংগতভাবে ইনডেন্ট করা।
YAML কমেন্টের কী হয়?
সেগুলো সরিয়ে দেওয়া হয়। JSON-এ কমেন্টের সিনট্যাক্স নেই, তাই কমেন্ট নিয়ে যাওয়া যায় না। আবার YAML-এ রূপান্তর করলেও সেগুলো ফেরত আসবে না।
<code>no</code> কেন string হিসেবেই থাকল?
এই টুল YAML 1.2 মেনে চলে, যেখানে শুধু true/false boolean। পুরনো YAML 1.1 পার্সার no, yes, on ও off-কে boolean বানিয়ে দিত (“নরওয়ে সমস্যা”)।
কয়েকটি রিসোর্সযুক্ত Kubernetes manifest কি রূপান্তর করা যায়?
হ্যাঁ। --- দিয়ে আলাদা করা প্রতিটি রিসোর্স আউটপুট JSON অ্যারের একটি এলিমেন্ট হয়, যা jq বা kubectl apply -f --এর জন্য প্রস্তুত, কারণ এটি JSON তালিকাও গ্রহণ করে।

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