YAML থেকে JSON রূপান্তর হলো YAML (YAML Ain't Markup Language)-এ লেখা ডেটাকে JSON (JavaScript Object Notation)-এ রূপান্তরিত করার প্রক্রিয়া। উভয় ফরম্যাট কী-ভ্যালু পেয়ার, ক্রম ও নেস্টেড অবজেক্ট হিসেবে কাঠামোবদ্ধ ডেটা উপস্থাপন করে, তবে সিনট্যাক্সে ভিন্নতা রয়েছে। YAML ইন্ডেন্টেশন ও ন্যূনতম বিরামচিহ্ন ব্যবহার করে, যেখানে JSON ব্রেস, ব্র্যাকেট ও বাধ্যতামূলক উদ্ধৃতি ব্যবহার করে। এমন সিস্টেমের মধ্যে কনফিগারেশন ডেটা স্থানান্তর করার সময় এই দুটির মধ্যে রূপান্তর একটি সাধারণ কাজ যেখানে ভিন্ন ফরম্যাট প্রত্যাশিত।
YAML মানব-পাঠযোগ্যতার কথা মাথায় রেখে তৈরি করা হয়েছে। এটি মন্তব্য, মাল্টিলাইন স্ট্রিং, অ্যাংকর ও এলিয়াস সমর্থন করে — এর কোনোটিই JSON-এ নেই। যখন আপনি YAML থেকে JSON রূপান্তর করেন, এই YAML-নির্দিষ্ট বৈশিষ্ট্যগুলি সমাধান করা হয়: অ্যাংকর ইনলাইনে প্রসারিত হয়, মন্তব্য বাদ দেওয়া হয় এবং মাল্টিলাইন ব্লক এস্কেপড স্ট্রিংয়ে পরিণত হয়। আউটপুট হলো বৈধ JSON যা যেকোনো JSON পার্সার পড়তে পারে।
YAML 1.2 স্পেসিফিকেশন স্পষ্টভাবে JSON-কে YAML-এর সাবসেট হিসেবে সংজ্ঞায়িত করে, অর্থাৎ প্রতিটি বৈধ JSON ডকুমেন্ট একই সাথে বৈধ YAML। বিপরীতটি সত্য নয়। মন্তব্য, অ্যাংকর বা জটিল কী ব্যবহার করা YAML ডকুমেন্টের কোনো সরাসরি JSON সমতুল্য নেই এবং রূপান্তরের সময় সেগুলি সহজ করতে হয়। এই টুলটি সেই রূপান্তর স্বয়ংক্রিয়ভাবে পরিচালনা করে, যেকোনো বৈধ YAML ইনপুট থেকে পরিষ্কার, সুগঠিত JSON তৈরি করে।
হাতে YAML থেকে JSON রূপান্তর করা ত্রুটিপ্রবণ, বিশেষত গভীরভাবে নেস্টেড কাঠামো বা মাল্টিলাইন মানের ক্ষেত্রে। ব্রাউজার-ভিত্তিক কনভার্টার তাৎক্ষণিকভাবে ফলাফল দেয় এবং YAML সিনট্যাক্স ত্রুটি আপনার অ্যাপ্লিকেশনে পৌঁছানোর আগেই ধরে ফেলে।
⚡
ব্রাউজারে তাৎক্ষণিক রূপান্তর
আপনার YAML পেস্ট করুন এবং মিলিসেকেন্ডে ফরম্যাট করা JSON আউটপুট পান। কোনো CLI টুল ইনস্টল করতে হবে না, কোনো বিল্ড ধাপ নেই, কোনো নির্ভরতা পরিচালনা করতে হবে না।
🔀
যেকোনো বৈধ YAML কাঠামো পরিচালনা করে
নেস্টেড ম্যাপিং, ক্রম, মাল্টিলাইন স্ট্রিং (লিটারেল ও ফোল্ডেড ব্লক), অ্যাংকর, এলিয়াস, মার্জ কী এবং সমস্ত YAML 1.2 স্কেলার টাইপ সমর্থিত।
🔒
আপনার ডেটা গোপন রাখুন
সমস্ত পার্সিং JavaScript ব্যবহার করে আপনার ব্রাউজারে স্থানীয়ভাবে চলে। আপনার YAML বিষয়বস্তু কখনো কোনো সার্ভারে পাঠানো হয় না, তাই ক্রেডেনশিয়াল বা অভ্যন্তরীণ পাথ ধারণকারী কনফিগারেশন ফাইলের জন্য এটি নিরাপদ।
📋
আউটপুট ফরম্যাট কপি বা কাস্টমাইজ করুন
২-স্পেস ও ৪-স্পেস ইন্ডেন্টেশনের মধ্যে পরিবর্তন করুন। কোড, API অনুরোধ বা কনফিগ ফাইলে সরাসরি ব্যবহারের জন্য এক ক্লিকে JSON ফলাফল ক্লিপবোর্ডে কপি করুন।
YAML to JSON ব্যবহারের ক্ষেত্র
ফ্রন্টএন্ড ডেভেলপমেন্ট
ডিজাইন সিস্টেম বা CMS থেকে YAML কনফিগারেশন ফাইল JSON-এ রূপান্তর করুন, যা JavaScript বান্ডেলার, REST API বা i18n লাইব্রেরিতে ব্যবহার করা যাবে যেগুলি JSON ইনপুট প্রত্যাশা করে।
ব্যাকএন্ড ইঞ্জিনিয়ারিং
Spring Boot-এর application.yml বা Rails-এর database.yml-কে JSON-এ রূপান্তর করুন, যা ডিপ্লয়মেন্ট স্ক্রিপ্ট, API গেটওয়ে বা শুধুমাত্র JSON কনফিগারেশন গ্রহণকারী সার্ভিসে ব্যবহার করা যাবে।
DevOps ও CI/CD
ভ্যালিডেশন টুল, OPA-এর মতো পলিসি ইঞ্জিন বা jq দিয়ে ডিবাগিংয়ের জন্য docker-compose.yml, GitHub Actions ওয়ার্কফ্লো বা Kubernetes ম্যানিফেস্ট JSON-এ রূপান্তর করুন।
QA ও টেস্টিং
Postman, Insomnia বা JSON রিকোয়েস্ট বডি প্রত্যাশা করে এমন অটোমেটেড টেস্ট স্যুটের জন্য YAML টেস্ট ফিক্সচারকে JSON পেলোডে রূপান্তর করুন।
ডেটা ইঞ্জিনিয়ারিং
স্কিমা যাচাইকরণ, প্রোগ্রামগত ম্যানিপুলেশন বা মেটাডেটা ক্যাটালগের সাথে একীকরণের জন্য YAML-ফরম্যাট পাইপলাইন সংজ্ঞা (Airflow, dbt, Dagster) JSON-এ রূপান্তর করুন।
শিক্ষা ও ডকুমেন্টেশন
কনফিগারেশন ফরম্যাট অধ্যয়ন বা ডকুমেন্টেশন লেখার সময় YAML কাঠামো তাদের JSON সমতুল্যের সাথে কীভাবে মিলে তা দ্রুত দেখুন।
YAML থেকে JSON টাইপ ম্যাপিং রেফারেন্স
প্রতিটি YAML ডেটা টাইপ রূপান্তরের সময় একটি নির্দিষ্ট JSON টাইপে মেলে। নিচের সারণিতে প্রতিটি YAML কনস্ট্রাক্ট তার JSON আউটপুটের পাশে দেখানো হয়েছে। এই ম্যাপিংগুলি বোঝা আপনাকে রূপান্তরের পরে YAML ডেটা কেমন দেখাবে তা অনুমান করতে এবং বুলিয়ান বা null মানের মতো টাইপ নিয়ে অপ্রত্যাশিত ফলাফল এড়াতে সাহায্য করে।
YAML টাইপ
YAML সিনট্যাক্স
JSON আউটপুট
Mapping
name: Alice
{ "name": "Alice" }
Sequence
- apple\n- banana
["apple", "banana"]
String
greeting: hello world
"hello world"
Integer
count: 42
42
Float
ratio: 3.14
3.14
Boolean
active: true
true
Null
value: null
null
Multiline (|)
bio: |\n Line one\n Line two
"Line one\nLine two\n"
Folded (>)
note: >\n A long\n paragraph
"A long paragraph\n"
Anchor/Alias
&default\n <<: *default
Resolved inline (no $ref)
YAML বনাম JSON সিনট্যাক্স
YAML ও JSON একই ডেটা মডেল উপস্থাপন করে কিন্তু ভিন্ন সিনট্যাক্স নিয়মে। নিচের পার্থক্যগুলি ব্যাখ্যা করে কেন মন্তব্য ও অ্যাংকরের মতো কিছু YAML বৈশিষ্ট্যের কোনো JSON সমতুল্য নেই।
YAML
নেস্টিংয়ের জন্য ইন্ডেন্টেশন ব্যবহার করে (কোনো ব্রেস নেই)। # দিয়ে মন্তব্য সমর্থন করে। স্ট্রিংয়ে সাধারণত উদ্ধৃতির প্রয়োজন হয় না। | (লিটারেল) ও > (ফোল্ডেড) ব্লক স্কেলার দিয়ে মাল্টিলাইন মান সমর্থন করে। পুনর্ব্যবহারের জন্য অ্যাংকর (&name) ও এলিয়াস (*name) সমর্থন করে। YAML 1.2-এ শুধুমাত্র true ও false বুলিয়ান মান হিসেবে স্বীকৃত; পুরনো YAML 1.1 পার্সার yes, no, on ও off-কেও গ্রহণ করত, কিন্তু YAML 1.2-এ এগুলি সাধারণ স্ট্রিং হিসেবে বিবেচিত।
JSON
নেস্টিংয়ের জন্য ব্রেস ও ব্র্যাকেট ব্যবহার করে। কোনো মন্তব্য সিনট্যাক্স নেই। সমস্ত স্ট্রিং অবশ্যই ডাবল-কোটেড হতে হবে। কোনো মাল্টিলাইন স্ট্রিং লিটারেল নেই — পরিবর্তে \n এস্কেপ সিকোয়েন্স ব্যবহার করুন। কোনো অ্যাংকর বা এলিয়াস প্রক্রিয়া নেই। বুলিয়ান মান কঠোরভাবে ছোট হাতের true ও false। সমস্ত কী অবশ্যই কোটেড স্ট্রিং হতে হবে। ট্রেলিং কমা অবৈধ।
কোড উদাহরণ
নিচে প্রোগ্রামগতভাবে YAML থেকে JSON রূপান্তরের কার্যকর উদাহরণ দেওয়া হয়েছে। প্রতিটি উদাহরণ একটি YAML স্ট্রিং পার্স করে এবং ফরম্যাট করা JSON আউটপুট দেয়।
# Convert a YAML file to JSON with yq
yq -o=json config.yaml > config.json
# Pipe YAML into yq for one-off conversion
echo "name: demo" | yq -o=json
# → { "name": "demo" }
# Python one-liner (no extra install on most systems)
python3 -c "import yaml, json, sys; print(json.dumps(yaml.safe_load(sys.stdin), indent=2))" < config.yaml
প্রায়শই জিজ্ঞাসিত প্রশ্ন
YAML কি JSON-এর সুপারসেট?
হ্যাঁ, YAML 1.2 (২০০৯ সালে প্রকাশিত) থেকে। প্রতিটি বৈধ JSON ডকুমেন্ট একই সাথে বৈধ YAML। YAML স্পেসিফিকেশন ইচ্ছাকৃতভাবে সম্পূর্ণ JSON সামঞ্জস্যতা নিশ্চিত করতে আপডেট করা হয়েছিল। তবে বিপরীতটি সত্য নয় — মন্তব্য, অ্যাংকর ও উদ্ধৃতিহীন কীর মতো YAML বৈশিষ্ট্যের কোনো JSON সমতুল্য নেই।
রূপান্তরের সময় YAML মন্তব্যের কী হয়?
মন্তব্য বাদ দেওয়া হয়। JSON-এ কোনো মন্তব্য সিনট্যাক্স নেই, তাই YAML ইনপুটে # দিয়ে শুরু হওয়া যেকোনো লাইন রূপান্তরের সময় হারিয়ে যায়। মন্তব্য সংরক্ষণ করতে হলে, মূল YAML ফাইলটিকে সত্যের উৎস হিসেবে রাখুন এবং প্রয়োজনে সেটি থেকে JSON তৈরি করুন।
YAML অ্যাংকর ও এলিয়াস কীভাবে পরিচালিত হয়?
পার্সিংয়ের সময় অ্যাংকর (&name) ও এলিয়াস (*name) সমাধান করা হয়। এলিয়াসকে অ্যাংকর করা ডেটার সম্পূর্ণ কপি দিয়ে প্রতিস্থাপিত করা হয়। ফলে JSON-এ কোনো রেফারেন্স থাকে না — সমস্ত মান ইনলাইনে প্রসারিত। মার্জ কী (<<: *name) একইভাবে সমাধান করা হয়।
YAML থেকে JSON রূপান্তরে কি ডেটা হারাতে পারে?
না, ডেটার মান হারায় না। সমস্ত YAML স্কেলার টাইপ (স্ট্রিং, সংখ্যা, বুলিয়ান, null) এর সরাসরি JSON সমতুল্য রয়েছে। যা হারায়: মন্তব্য, ট্যাগ নির্দেশিকা, অ্যাংকর নাম এবং ব্লক ও ফ্লো স্টাইলের মধ্যে পার্থক্য। আপনার YAML কাস্টম ট্যাগ (!!python/object, !!timestamp) ব্যবহার করলে, সেগুলি সাধারণ মানে সমাধান হয় বা পার্সার অনুযায়ী পার্স ত্রুটি হতে পারে।
আমার YAML বুলিয়ান 'yes' JSON-এ স্ট্রিং হয়ে যাচ্ছে কেন?
এই টুলটি js-yaml v4 ব্যবহার করে, যা YAML 1.2 বুলিয়ান রেজোলিউশন অনুসরণ করে। শুধুমাত্র true ও false (যেকোনো ক্যাপিটালাইজেশনে) বুলিয়ান হিসেবে স্বীকৃত। yes, no, on ও off মানগুলি সাধারণ স্ট্রিং হিসেবে বিবেচিত এবং JSON আউটপুটে কোটেড স্ট্রিং হিসেবে দেখা যায়। বুলিয়ান প্রত্যাশিত জায়গায় অপ্রত্যাশিত স্ট্রিং মান দেখলে, আপনার YAML উৎসে true বা false ব্যবহার করুন।
এই টুলটি সর্বোচ্চ কত আকারের YAML ফাইল পরিচালনা করতে পারে?
টুলটি আপনার ব্রাউজারে চলে, তাই সীমা আপনার ডিভাইসের উপলব্ধ মেমোরির উপর নির্ভর করে। বাস্তবে কয়েক মেগাবাইট পর্যন্ত ফাইল কোনো সমস্যা ছাড়াই রূপান্তরিত হয়। খুব বড় ফাইলের জন্য (৫০ MB+), yq-এর মতো CLI টুল বা PyYAML সহ Python স্ক্রিপ্ট বেশি নির্ভরযোগ্য, কারণ সেগুলি সবকিছু একবারে মেমোরিতে না নিয়ে ডেটা স্ট্রিম হিসেবে প্রক্রিয়া করতে পারে।
YAML-এ দুটি মাল্টিলাইন ব্লক স্কেলার স্টাইল রয়েছে। লিটারেল ব্লক (|) JSON স্ট্রিংয়ে লাইন বিরতি \n অক্ষর হিসেবে সংরক্ষণ করে। ফোল্ডেড ব্লক (>) একক লাইন বিরতিকে স্পেস দিয়ে প্রতিস্থাপন করে, একাধিক লাইনকে একটি অনুচ্ছেদে পরিণত করে। উভয় স্টাইল ডিফল্টরূপে একটি ট্রেলিং নিউলাইন যোগ করে, যা কম্পিং ইন্ডিকেটর (|- বা >-) দিয়ে বাদ দেওয়া যায়।