আপনার ব্রাউজারে JSON-কে সুগঠিত XML-এ রূপান্তর করুন। রুট এলিমেন্টের নাম চয়ন করুন, XML ডিক্লারেশন অন্তর্ভুক্ত বা বাদ দিন এবং 2 স্পেস, 4 স্পেস বা কোনো ইন্ডেন্টেশন নয় — বেছে নিন।
JSON গাছকে নিরাপদে এলিমেন্টে ম্যাপ করুন। JSON পেস্ট করুন এবং সুগঠিত XML ফিরে পান। অ্যারে বারবার এলিমেন্ট হয়, অবৈধ কী নাম বৈধ এলিমেন্ট নামে রূপান্তরিত হয়, আর ডিক্লারেশন ও ইন্ডেন্টেশন দুটোই আপনার সিদ্ধান্ত।
XML আউটপুট
মাথা না হারিয়ে JSON-কে XML-এ ম্যাপ করা
দুটি মডেল এক লাইনে মেলে না
JSON-এর ছয় ধরনের মান আছে — অবজেক্ট, অ্যারে, স্ট্রিং, সংখ্যা, বুলিয়ান ও null — এবং প্রতিটিই স্ব-বর্ণনাকারী। XML-এর ঠিক একটি প্রিমিটিভ আছে: টেক্সট। বাকি সবকিছু এলিমেন্ট ও অ্যাট্রিবিউট দিয়ে তৈরি কাঠামো। দুটির মধ্যে কোনো অফিসিয়াল ম্যাপিং নেই, তাই আপনার দেখা প্রতিটি কনভার্টার একটু আলাদা আচরণ করে।
এখানে ব্যবহৃত রীতিটি সবচেয়ে সাধারণ ও সবচেয়ে পূর্বাভাসযোগ্য। একটি অবজেক্ট এমন একটি এলিমেন্ট হয় যার শিশু হলো তার কী। স্ট্রিং, সংখ্যা বা বুলিয়ান এর টেক্সট রূপ ধারণকারী এলিমেন্ট হয়। null খালি এলিমেন্ট হয়। বাকি থাকে অ্যারে, যার XML-এ কোনো প্রতিরূপ নেই: আদর্শ সমাধান হলো প্রতি আইটেমে প্যারেন্ট এলিমেন্ট একবার করে পুনরাবৃত্তি করা, তাই {"item": [1, 2]} হয়ে যায় <item>1</item><item>2</item> — গ্রাহক স্কিমা আশা করবে না এমন র্যাপার এলিমেন্ট আবিষ্কার না করে।
প্রতিটি JSON কী বৈধ এলিমেন্ট নাম নয়
XML এলিমেন্ট নাম NCName উৎপাদন অনুসরণ করে: এটি অক্ষর বা আন্ডারস্কোর দিয়ে শুরু হয়, এরপর অক্ষর, ডিজিট, হাইফেন, পিরিয়ড ও আন্ডারস্কোর অনুমোদিত। স্পেস নেই, স্ল্যাশ নেই, অগ্রণী ডিজিট নেই, এবং যেকোনো বড়হাতে/ছোটহাতে xml দিয়ে শুরু হওয়া কিছুই নেই, যা স্পেক সংরক্ষিত করে।
JSON কী-র এমন কোনো সীমাবদ্ধতা নেই — এগুলো নির্বিচার স্ট্রিং, আর বাস্তব জগতের পেলোডে "user name", "2024" ও "@type"-এর ভিড়। সেগুলো হুবহু নির্গত করলে কোনো পার্সার গ্রহণ করবে না এমন ডকুমেন্ট তৈরি হয়। তাই অবৈধ অক্ষর আন্ডারস্কোর দিয়ে প্রতিস্থাপিত হয় এবং নাম ডিজিট দিয়ে শুরু হলে একটি অগ্রণী আন্ডারস্কোর যোগ হয়। এটি তথ্যহানিকর পদক্ষেপ, তাই নিচের দিকে এলিমেন্ট নাম গুরুত্বপূর্ণ হলে কনভার্টারকে অনুমান করতে না দিয়ে আগে JSON-এ কীগুলোর নাম পরিবর্তন করুন।
ডিক্লারেশন, ইন্ডেন্টেশন এবং কী পরিবর্তন করা নিরাপদ
UTF-8 ডকুমেন্টের জন্য <?xml ... ?> ডিক্লারেশন ঐচ্ছিক; অনুপস্থিত থাকলে পার্সার UTF-8 ধরে নেয়। ফাইল ডিস্কে লেখা হবে, HTTP-তে পরিবেশিত হবে বা কঠোর এন্টারপ্রাইজ পাইপলাইনে দেওয়া হলে এটি অন্তর্ভুক্ত করুন, এবং টুকরোটি বৃহত্তর ডকুমেন্টের ভেতরে এমবেড করা হলে বাদ দিন, কারণ সেখানে দ্বিতীয় ডিক্লারেশন মারাত্মক ত্রুটি।
ইন্ডেন্টেশন আরও সূক্ষ্ম পছন্দ। JSON-এর বিপরীতে, XML-এ এলিমেন্টের ভেতরের হোয়াইটস্পেস কনটেন্টের অংশ, তাই প্রিটি-প্রিন্টিং প্রযুক্তিগতভাবে ডকুমেন্ট পরিবর্তন করে: যে এলিমেন্টে Ada ছিল সেখানে এখন নিউলাইন, কিছু স্পেস, Ada, নিউলাইন ও আরও স্পেস থাকে। বেশিরভাগ স্কিমা এটি উপেক্ষা করে, কিন্তু সিগনেচার যাচাই, xml:space="preserve" সেকশন ও হোয়াইটস্পেস-সংবেদনশীল ফরম্যাট করে না। পড়ার সময় ইন্ডেন্টেশন ব্যবহার করুন, আর মেশিন যা গ্রহণ করবে তার জন্য মিনিফাইড আউটপুটে স্যুইচ করুন।
FAQ
আমার JSON কি কোথাও আপলোড হয়?
না। বিল্ট-ইন JSON ফাংশন ব্যবহার করে ডকুমেন্টটি সম্পূর্ণ আপনার ব্রাউজারেই পার্স ও সিরিয়ালাইজ হয়, তাই সার্ভারে কিছু পাঠানো হয় না।
JSON অ্যারে কীভাবে উপস্থাপিত হয়?
প্রতি আইটেমে প্যারেন্ট এলিমেন্ট একবার করে পুনরাবৃত্তি হয়। {"item": [1, 2]} হয়ে যায় <item>1</item><item>2</item>, যা বেশিরভাগ XML স্কিমা আশা করে।
বৈধ এলিমেন্ট নাম নয় এমন কী-এর কী হয়?
অবৈধ অক্ষর আন্ডারস্কোর হয় এবং নাম ডিজিট দিয়ে শুরু হলে অগ্রণী আন্ডারস্কোর যোগ হয়। সঠিক নাম গুরুত্বপূর্ণ হলে আগে কীগুলোর নাম পরিবর্তন করুন।
আমার আউটপুটে XML ডিক্লারেশন অনুপস্থিত কেন?
এটি ঐচ্ছিক এবং একটি চেকবক্স দিয়ে নিয়ন্ত্রিত। এটি ছাড়া পার্সার UTF-8 ধরে নেয়, আর আউটপুট অন্য ডকুমেন্টের ভেতরে এমবেড করা হলে অবশ্যই বাদ দিতে হয়।
মান কি অ্যাট্রিবিউট হিসেবে লেখা হয়?
না। প্রতিটি মান এলিমেন্ট টেক্সট হয়। প্লেইন JSON থেকে অ্যাট্রিবিউট অনুমান করা যায় না, তাই সেগুলো বেছে নিতে এই টুলের নেই এমন একটি স্কিমা লাগবে।
ইন্ডেন্টেশন কি ডকুমেন্টের অর্থ পরিবর্তন করে?
প্রযুক্তিগতভাবে হ্যাঁ, কারণ এলিমেন্টের ভেতরের হোয়াইটস্পেস কনটেন্ট। বেশিরভাগ স্কিমা এটি উপেক্ষা করে, তবে সাইনড বা হোয়াইটস্পেস-সংবেদনশীল XML-এর জন্য মিনিফাইড আউটপুট ব্যবহার করুন।