টুল
গাইড

JSON ↔ YAML কনভার্টার

JSON

JSON এবং YAML 1.2-এর মধ্যে দ্বিমুখী রূপান্তর, লাইভ যাচাই এবং ত্রুটি সারি/কলাম অবস্থান সহ।

100% ক্লায়েন্ট-সাইড কোনো ব্যাকএন্ড নেই

দূরবর্তী URL আনা হয় না; আপনার JSON সরাসরি পেস্ট করুন।

ইনপুট
আউটপুট
রূপান্তরের জন্য YAML বা JSON লিখুন।
এই পৃষ্ঠায়

YAML / JSON কনভার্টার কী?#

YAML এবং JSON হলো একই ধরনের ডেটা লেখার দুটি উপায় — নেস্টেড ম্যাপ, তালিকা, স্ট্রিং, সংখ্যা, বুলিয়ান এবং null। JSON কঠোর এবং যতিচিহ্ন-ভারী (প্রতিটি স্ট্রিং দ্বি-উদ্ধৃতিতে, সর্বত্র বন্ধনী); YAML সেই উদ্ধৃতি ও বন্ধনীগুলোকে ইনডেন্টেশন এবং ড্যাশ দিয়ে প্রতিস্থাপন করে, যা এটিকে এত পঠনযোগ্য করে তোলে যে মানুষ কনফিগ ফাইল, CI পাইপলাইন এবং কন্টেইনার ম্যানিফেস্টের জন্য নিজ হাতে লেখে।

আপনাকে বারবার দুটির মধ্যে পারাপার করতে হয় কারণ ভিন্ন ভিন্ন টুল ভিন্ন ভিন্ন ফরম্যাট পছন্দ করে। একটি Kubernetes চার্ট YAML-এ রচিত হয় কিন্তু API কথা বলে JSON। একটি CI কনফিগ হলো YAML; যে লিন্টারে আপনি তা খাওয়াতে চান সে JSON প্রত্যাশা করে। একজন সহকর্মী চ্যাটে একটি YAML দলা পেস্ট করেন; আপনার স্ক্রিপ্ট JSON.parse চায়। এটি হাতে করা — পুনরায় ইনডেন্ট, পুনরায় উদ্ধৃতি, ড্যাশের বদলে বন্ধনী — ঠিক সেই ঝুঁকিপূর্ণ কাজ যা একটি অতিরিক্ত কমা বা একটি বিচ্যুত স্পেস ঢুকিয়ে দেয়, এবং তারপর কিছুই পার্স হয় না।

এই পৃষ্ঠাটি আপনার ব্রাউজারে উভয় দিকে কনভার্ট করে। মেশিন-বান্ধব কঠোরতা প্রয়োজন হলে YAML থেকে JSON; একটি কনফিগ ফাইল চান যা মানুষ আসলে পড়তে পারে তখন JSON থেকে YAML। এটি YAML 1.2 কোর স্কিমা দিয়ে পার্স করে (কোনো ঝুঁকিপূর্ণ অবজেক্ট ইনস্ট্যান্টিয়েশন নেই), ত্রুটিগুলোকে একটি সুনির্দিষ্ট সারি ও কলামে আটকে দেয়, এবং লম্বা লাইন ভাঁজ করতে অস্বীকার করে যাতে আউটপুট diff-বান্ধব থাকে।

ব্যবহারবিধি#

  1. টুলবারের উপরের বাম দিকের দুই-বোতাম টগল থেকে একটি দিক বেছে নিন:
    • YAML → JSON (ডিফল্ট): বাঁদিকে YAML পেস্ট করুন, ডানদিকে কঠোর JSON পান।
    • JSON → YAML: বাঁদিকে JSON পেস্ট করুন, ডানদিকে ইনডেন্ট করা YAML পান।
  2. ইনডেন্ট বেছে নিন — ২ বা ৪ স্পেস। এটি উভয় পাশে আউটপুটের নেস্টিং গভীরতা নিয়ন্ত্রণ করে।
  3. নিজের ডেটা পেস্ট করার আগে আচরণ দেখতে চাইলে নমুনা ক্লিক করুন, অথবা উভয় পেইন মুছতে মুছুন।
  4. কনভার্সন চলার সাথে সাথে ডান পেইন আপডেট হয়। নিচের স্ট্যাটাস বার তিনটির মধ্যে একটি রিপোর্ট করে: আউটপুট বাইট আকার সহ একটি সাফল্য লাইন, একটি খালি-ইনপুট ইঙ্গিত, অথবা সুনির্দিষ্ট ত্রুটিযুক্ত টোকেন নির্দেশকারী 1-ভিত্তিক সারি ও কলাম সহ একটি পার্স ত্রুটি।
  5. ফলাফল নিতে আউটপুট হেডারে কপি ক্লিক করুন।

ইনপুট পার্স হওয়ার মুহূর্তেই কনভার্সন চলে। ক্লিক করার মতো কোনো তৈরি বোতাম নেই — ইনপুট ঠিক করুন এবং আউটপুট রিফ্রেশ হবে।

মূল বৈশিষ্ট্য#

  • দ্বিমুখী, এক জোড়া পেইন। একই ইনপুট/আউটপুট বিন্যাস উভয় দিক পরিচালনা করে; টগলটি সিদ্ধান্ত নেয় কোন পার্সার চলবে।
  • YAML 1.2 কোর স্কিমা। null, true/false, পূর্ণসংখ্যা, ফ্লোট এবং উদ্ধৃত স্ট্রিং সবাই ঠিক তেমনভাবে সমাধান করে যেমন একটি মানক-সম্মত পার্সার করে — একটি শিথিল হিউরিস্টিক হিসেবে নয়।
  • লাইন ভাঁজ নিষ্ক্রিয়। লম্বা আউটপুট লাইন কখনো মোড়ানো বা বাদ দেওয়া হয় না, তাই একটি চেক-ইন করা ফাইলের বিরুদ্ধে diff শুধু প্রকৃত পরিবর্তন দেখায়।
  • সুনির্দিষ্ট ত্রুটির অবস্থান। একটি বিচ্যুত ইনডেন্ট বা একটি অতিরিক্ত : কে সারি:কলাম হিসেবে রিপোর্ট করা হয়, সাধারণ “পার্স করা যায়নি” হিসেবে নয়।
  • গভীরতা-সুরক্ষিত। গভীরভাবে নেস্ট করা ইনপুট (ক্লাসিক “YAML billion-laughs” সম্প্রসারণ) সীমাবদ্ধ, তাই একটি শত্রু বা দুর্ঘটনাক্রমে রিকার্সিভ ফাইল ট্যাব ফ্রিজ করতে পারে না।
  • শুধু স্থানীয়। আপনার কনফিগ কখনো পৃষ্ঠা ছাড়ে না — এমন কোনো ব্যাকএন্ড নেই যেখানে তা পাঠানো যাবে। এক মেগাবাইটের বেশি হলে, ভারী পার্স একটি ব্যাকগ্রাউন্ড ওয়ার্কারে হস্তান্তর করা হয় যাতে UI প্রতিক্রিয়াশীল থাকে।

ব্যবহারিক উদাহরণ#

একটি সাধারণ বাস্তব কাজ: YAML হিসেবে লেখা একটি পরিষেবা কনফিগকে একটি JSON অনুরোধ বডিতে নিতে হবে। এটি YAML → JSON এবং 2 ইনডেন্ট নির্বাচিত অবস্থায় বাঁদিকের পেইনে পেস্ট করুন:

name: api-gateway
port: 8080
replicas: 3
targets:
  - host: example.com
    port: 443
  - host: cdn.example.com
    port: 8443
features:
  retries: true
  timeout_ms: 2500

ডান পেইন কঠোর, পার্স-প্রস্তুত JSON তৈরি করে:

{
  "name": "api-gateway",
  "port": 8080,
  "replicas": 3,
  "targets": [
    {
      "host": "example.com",
      "port": 443
    },
    {
      "host": "cdn.example.com",
      "port": 8443
    }
  ],
  "features": {
    "retries": true,
    "timeout_ms": 2500
  }
}

খেয়াল করুন উদ্ধৃতিবিহীন YAML মান 8080, true, এবং 3 যথাক্রমে একটি JSON সংখ্যা, বুলিয়ান এবং সংখ্যায় পরিণত হয়েছে — কোর স্কিমা সেগুলোর প্রকার নির্ধারণ করেছে, আপনাকে করতে হয়নি। দিক উল্টে দিন (JSON → YAML) এবং JSON ফিরিয়ে পেস্ট করুন: আপনি একই নেস্ট কাঠামো তালিকা আইটেমের জন্য ড্যাশ সহ পুনরায় ইনডেন্ট করা পাবেন, যা সেই রূপ আপনি একটি কনফিগ রিপোজিটরিতে চেক ইন করবেন।

প্রশ্নোত্তর#

রাউন্ড ট্রিপ জুড়ে আমার YAML মন্তব্যগুলো কি সংরক্ষিত হয়?#

না। JSON-এ কোনো মন্তব্য সিনট্যাক্সই নেই, তাই আপনার YAML-এর যেকোনো # comment পড়া হয় এবং JSON-এ যাওয়ার পথে বাদ দেওয়া হয় — এটি রাখার মতো কোনো জায়গাই নেই। মন্তব্য ইনপুটে সহ্য করা হয় (সেগুলো কখনো ত্রুটি ঘটায় না), কিন্তু পারাপারে টিকতে পারে না। মন্তব্য যদি গুরুত্বপূর্ণ হয়, YAML কে সত্যের উৎস হিসেবে রাখুন এবং প্রতিবার তা থেকে JSON তৈরি করুন।

এটি কি মাল্টি-ডকুমেন্ট YAML (--- দ্বারা বিভক্ত ফাইল) সামলায়?#

এটি ডকুমেন্ট স্ট্রিম প্রক্রিয়া করে এবং অগ্রণী ডকুমেন্ট ফেরত দেয়। বেশিরভাগ কনফিগ ও ম্যানিফেস্ট ফাইল একক-ডকুমেন্ট, তাই এটি খুব কমই সমস্যা; আপনার যদি মাল্টি-ডকুমেন্ট স্ট্রিম থাকে, তবে --- বিভাজকে বিভক্ত করে প্রতিটি অংশ আলাদাভাবে কনভার্ট করুন।

YAML নাকি JSON আমার কনফিগ ফাইলের জন্য — কোনটি বেছে নেব?#

YAML ব্যবহার করুন যখন একজন মানুষ তা হাতে এডিট করেন এবং আপনি অ্যাঙ্কর ও ইনডেন্ট দ্বারা নেস্টিং সহ মন্তব্য-সদৃশ পঠনযোগ্যতা চান। JSON ব্যবহার করুন যখন একটি মেশিন তা তৈরি করে এবং একটি পার্সার গ্রহণ করে, বা যখন কঠোরতা গুরুত্বপূর্ণ (JSON-এ প্রতিটি মান লেখার ঠিক একটি বৈধ উপায় আছে, তাই ডিবাগ করার মতো কোনো অস্পষ্টতা নেই)। এই টুলটি এজন্যই আছে যাতে আপনাকে শুধু একটিতেই আটকে থাকতে না হয়।

ত্রুটিতে বলছে “সারি 4, কলাম 5” কিন্তু সেই লাইনটি ঠিক দেখাচ্ছে। কী ভুল?#

প্রায় সবসময়ই ইনডেন্টেশন। YAML কাঠামো শীর্ষস্থানীয় স্পেস থেকে সিদ্ধান্ত নেয়, তাই এমন একটি চাইল্ড যা এক স্পেস বামে বা ডানে বেশি — বা মিশ্রিত ট্যাব ও স্পেস — প্রকৃত ত্রুটিস্থলের পরের লাইনে ত্রুটি হিসেবে প্রকাশ পায়, কারণ পার্সার অসঙ্গতিটি তখনই খেয়াল করে যখন সে পরের টোকেনটি পড়ে। রিপোর্ট করা সারির উপরের লাইনের ইনডেন্ট প্রথমে পরীক্ষা করুন।