XML ⇄ JSON
যেকোনো একটি ফরম্যাট পেস্ট করুন — টাইপ করার সঙ্গে সঙ্গে অন্যটি দেখা যায়, দুই দিকেই।
কীভাবে ব্যবহার করবেন
- বাক্সে XML বা JSON পেস্ট করুন — টাইপ করার সঙ্গে সঙ্গে ফলাফল আঁকা হয়, চাপার কোনো বোতাম নেই। দিকটি প্রথম অক্ষর থেকে শনাক্ত হয় (XML-এর জন্য <, JSON-এর জন্য [ বা {) এবং ফলাফলের উপরে দেখানো হয়, তাই যাচাই করতে পারেন।
- দিক ভুল অনুমান হলে XML → JSON বা JSON → XML বাছুন। নিচের অপশনগুলো দিক অনুযায়ী বদলায়: XML → JSON-এ "সংখ্যা ও বুলিয়ান শনাক্ত করুন" দেখায়, আর JSON → XML-এ অ্যারে মুড়ে দেওয়ার "রুটের নাম" দেখায়।
- ফলাফল কপি বা ডাউনলোড করুন। দুটোই স্ক্রিনে দেখা ঠিক টেক্সট ব্যবহার করে; ফাইলের নাম data.json বা data.xml। "নমুনা লোড করুন" চালু দিকের জন্য একটি উদাহরণ ভরে দেয়।
উদাহরণ
ইনপুট (XML)
<note id="1"><to>রাফিয়া</to><from>তানভীর</from><body>হ্যালো!</body></note>
আউটপুট (JSON)
{ "note": { "@id": "1", "to": "রাফিয়া", "from": "তানভীর", "body": "হ্যালো!" } }
id অ্যাট্রিবিউট হয় "@id", প্রতিটি চাইল্ড উপাদান হয় একটি কী, আর <body>-এর ভেতরের টেক্সট হয় একটি স্ট্রিং মান। প্রতিটি মান — id সহ — টেক্সট হিসেবে রাখতে "সংখ্যা ও বুলিয়ান শনাক্ত করুন" বন্ধ করুন।
নিয়ম, সীমাবদ্ধতা ও পরিচিত সমস্যা
- ফাইল আপলোড, ড্র্যাগ-অ্যান্ড-ড্রপ বা URL থেকে আনা নেই: টেক্সট পেস্ট করুন। ড্রপ জোন ফলাফলের দরকারি উচ্চতা খেয়ে ফেলত, আর ফাইল ঠিকভাবে পড়তে অ-UTF-8 এনকোডিং সামলাতে হয় — XML ফরম্যাটারে ফাইলটি খুলে (GB18030, Big5, Windows-1256) টেক্সট কপি করুন।
- ইনপুট 1,000,000 অক্ষরে সীমিত; 200,000-এর বেশি হলে ফলাফল আপনার টাইপিং থামা পর্যন্ত অপেক্ষা করে এবং তা জানায়। কঠিন সীমার উপরে গেলে স্পষ্ট ত্রুটি পান — ইনপুট কখনো নীরবে কাটা হয় না।
- ম্যাপিং সজ্ঞানে নির্দিষ্ট: উপাদান হয় অবজেক্ট; অ্যাট্রিবিউট হয় "@name"; উপাদানের টেক্সট হয় "#text"; চাইল্ড উপাদান হয় কী; আর একই নামের একাধিক চাইল্ড হয় অ্যারে। শুধু টেক্সটযুক্ত লিফ উপাদান সরাসরি স্ট্রিং হয়, তাই গভীরভাবে নেস্টেড নথিও পড়ার যোগ্য থাকে।
- টাইপ শনাক্তকরণ (XML → JSON) রক্ষণশীল: শুধু true / false / null (শুধু ছোট হাতের) আর কঠোর JSON সংখ্যা আসল টাইপে বদলায়। শুরুর শূন্যযুক্ত পূর্ণসংখ্যা (00501) ও 16 বা তার বেশি অঙ্কের সংখ্যা স্ট্রিং থাকে; সুইচ বন্ধ থাকলে বাকি সব টেক্সট থাকে। অ্যাট্রিবিউট সবসময় টেক্সট হিসেবে থাকে, কখনো পুনঃটাইপ হয় না, কারণ XML অ্যাট্রিবিউট টেক্সচুয়াল।
- JSON → XML-এ একক রুট দরকার, তাই শীর্ষস্তরের অবজেক্ট তার একমাত্র কী-কে রুট উপাদান হিসেবে ব্যবহার করে। শীর্ষস্তরের JSON অ্যারের একক রুট নেই এবং তা "রুটের নাম" উপাদানে মুড়ে দেওয়া হয়, প্রতিটি আইটেম পুনরাবৃত্ত চাইল্ড হয় (ডিফল্ট নাম "item")।
- কী-এর অধীনে JSON মান হতে পারে অবজেক্ট, অ্যারে, স্ট্রিং, সংখ্যা, true / false বা null। "@name" কী হয় অ্যাট্রিবিউট (null / undefined বাদ যায়); "#text" হয় উপাদানের টেক্সট; বাকি প্রতিটি কী হয় চাইল্ড উপাদান। অ্যারে পুনরাবৃত্ত উপাদান তৈরি করে।
- XML কমেন্ট, প্রসেসিং ইনস্ট্রাকশন (<? … ?>) ও DOCTYPE বাদ দেওয়া হয় এবং গণনা করা হয় (JSON-এ এগুলো প্রকাশ করা যায় না); CDATA টেক্সট হিসেবে থাকে। মিশ্র কনটেন্ট — চাইল্ড উপাদানের পাশে থাকা টেক্সট — "#text"-এ ফ্ল্যাট হয় এবং তার মূল ক্রম সংরক্ষিত থাকে না; প্রভাবিত উপাদানগুলো গণনা করা হয় যাতে দেখতে পারেন।
- JSON কঠোরভাবে পার্স হয়: কমেন্ট নেই, বাড়তি কমা নেই, একক কোট নেই, এস্কেপ না করা কন্ট্রোল অক্ষর নেই, নেস্টিং সর্বোচ্চ 64 স্তর। প্রতি লাইনে একটি অবজেক্ট (JSON Lines) গ্রহণ করা হয় না — আগে অবজেক্টগুলো একটি অ্যারেতে মুড়ে দিন।
- XML এনটিটি রেফারেন্স (& < >) টেক্সট ও অ্যাট্রিবিউটে হুবহু থাকে (ডিকোড হয় না), তাই রাউন্ড ট্রিপে ঠিক একই বাইট ফেরে। JSON → XML পক্ষে এস্কেপিং যোগ হয়: টেক্সটে & < > এস্কেপ হয়, আর অ্যাট্রিবিউটের মানে " এস্কেপ হয়।
- এখানে নেই: XSLT, XPath, XML Schema যাচাই, ট্যাগ নামের অংশ ছাড়া অন্য কিছু হিসেবে নেমস্পেস, ডুপ্লিকেট কীযুক্ত JSON (শেষটি জেতে, JSON.parse-এর মতো), এবং কমেন্টের ক্রম সংরক্ষণ। কিছুই আপলোড, সংরক্ষণ বা URL-এ যায় না।
সম্পর্কিত টুল
ডেটা অন্য ফরম্যাটে চলে গেলে সাধারণত যা দরকার।