টুল
গাইড

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

JSON

JSON এবং XML-এর মধ্যে রূপান্তর করে। নেস্টেড অবজেক্টগুলি একটি কনফিগারযোগ্য রুট এলিমেন্টে মোড়ানো হয়।

100% ক্লায়েন্ট-সাইড কোনো ব্যাকএন্ড নেই
ইনপুট
আউটপুট
এই পৃষ্ঠায়

JSON ↔ XML কনভার্টার কী?#

JSON এবং XML হলো কাঠামোগত ডেটা লেখার দুটি ভিন্ন উপায়, এবং সিনট্যাক্স স্তরে এগুলো বিনিময়যোগ্য নয় — একটি বন্ধনী ব্যবহার করে, অন্যটি কোণ-বন্ধনী ট্যাগ ব্যবহার করে। এদের মধ্যে একটি কনভার্টার “কম্প্রেস” বা “এনকোড” করে না; এটি একই মানের ট্রিকে অন্য প্রতীকে পুনরায় প্রকাশ করে, যাতে এমন একটি সিস্টেম যা শুধু XML বোঝে তা JSON-এ আগত ডেটা গ্রহণ করতে পারে, এবং উল্টোটাও।

ম্যাপিংটি বেশিরভাগ যান্ত্রিক, কিন্তু দুটি সুপরিচিত অসুবিধা আছে। প্রথমত, XML-এ ঠিক একটি রুট এলিমেন্ট প্রয়োজন যা সবকিছু মুড়ে রাখে, যেখানে JSON শীর্ষ স্তরকে একটি খালি অবজেক্ট বা অ্যারে হতে দিতে আনন্দে সায় দেয় — তাই JSON থেকে XML-এ যাওয়া সবসময়ই সেই বাইরের মোড়কের জন্য একটি নাম বেছে নেওয়ার বিষয়। দ্বিতীয়ত, XML এলিমেন্ট অ্যাট্রিবিউট বহন করতে পারে (<a id="7">), যার JSON-এ কোনো নেটিভ সমতুল্য নেই; প্রচলিত রীতি হলো সেগুলোকে @-পূর্ববর্তী কী-এর অধীনে রাখা, এবং অ্যাট্রিবিউটের পাশে থাকা যেকোনো টেক্সটকে একটি #text কী-এর অধীনে।

এই পৃষ্ঠাটি ব্রাউজারে উভয় দিকে কনভার্ট করে: JSON থেকে XML (আপনার নামকরা একটি রুট এলিমেন্টের অধীনে আপনার মান মুড়ে), এবং XML থেকে JSON (অ্যাট্রিবিউটগুলোকে @-কী-এ আনপ্যাক করে এবং, ডিফল্টভাবে, বাইরের রুট ছিন্ন করে যাতে আপনি ভেতরের মান ফিরে পান)।

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

  1. টুলবারের উপরের বাম কোণার JSON → XML / XML → JSON টগল দিয়ে দিক নির্বাচন করুন।
  2. বাঁদিকের ইনপুট পেইনে টাইপ করুন বা পেস্ট করুন।
    • JSON → XML বৈধ JSON প্রত্যাশা করে। যেকোনো শীর্ষ-স্তরের মান রুট এলিমেন্টের অধীনে মুড়ানো হয়।
    • XML → JSON একটি সুগঠিত XML নথি প্রত্যাশা করে। একক বাইরের এলিমেন্ট স্বয়ংক্রিয়ভাবে আনর‍্যাপ করা হয়, যাতে আপনি এর ভেতরের কন্টেন্ট JSON হিসেবে পান।
  3. JSON → XML মোডে, মোড়ক ট্যাগের নাম দিতে রুট এলিমেন্ট ফিল্ড সেট করুন (ডিফল্ট root) — যেমন user, feed, response। XML একটি একক রুট বাধ্যতামূলক করে, তাই এই নাম সবসময় প্রয়োজন।
  4. ফলাফল আউটপুট পেইনে লাইভ উপস্থিত হয়। নেওয়ার জন্য কপি ক্লিক করুন।
  5. নমুনা বর্তমান দিকের জন্য উপযুক্ত একটি ছোট নথি লোড করে; মুছুন উভয় পেইন রিসেট করে।

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

  • উভয় দিক, একটি টুলে। একটি একক টগল JSON-to-XML এবং XML-to-JSON-এর মধ্যে স্যুইচ করে, ইনপুট পেইন স্বয়ংক্রিয়ভাবে পুনরায় টার্গেট হয়।
  • কনফিগারযোগ্য রুট এলিমেন্ট। যেহেতু XML একটি একক বাইরের এলিমেন্ট ছাড়া থাকতে পারে না, আপনি মোড়কের নাম দেন; কনভার্টার যেকোনো JSON শীর্ষ-স্তরের আকারের জন্য মোড়ক পরিচালনা করে।
  • সঠিক XML ডিক্লারেশন। JSON-to-XML আউটপুট মানক <?xml version="1.0" encoding="UTF-8"?> প্রোলগ দিয়ে শুরু হয় এবং দুই-স্পেস ইনডেন্টেশন সহ প্রেটি-প্রিন্ট করা হয়।
  • অ্যাট্রিবিউট রাউন্ড-ট্রিপ। XML-to-JSON এলিমেন্ট অ্যাট্রিবিউট @-পূর্ববর্তী কী-এর অধীনে সংরক্ষণ করে, এবং অ্যাট্রিবিউটের পাশে থাকা টেক্সট #text-এর অধীনে রাখা হয়, তাই কিছুই নীরবে বাদ দেওয়া হয় না।
  • সংখ্যা-সচেতন পার্সিং। XML সম্পূর্ণই টেক্সট; পার্সার সংখ্যা-সদৃশ এলিমেন্ট মানকে আবার JSON সংখ্যায় রূপান্তর করে (তাই <age>36</age> হয় 36, "36" নয়)।

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

JSON → XML#

দিক JSON → XML সেট করা এবং রুটের নাম root দিয়ে, নমুনা লোড করুন:

{
  "name": "Ada",
  "age": 36,
  "skills": ["math", "logic"]
}

কনভার্টার সবকিছু <root>-এর অধীনে মুড়ে এবং অ্যারেটিকে XML-এর প্রয়োজনীয় উপায়ে প্রসারিত করে — প্রতিটি এন্ট্রি একই ট্যাগ সহ তার নিজস্ব এলিমেন্ট হয়ে যায়:

<?xml version="1.0" encoding="UTF-8"?>
<root>
  <name>Ada</name>
  <age>36</age>
  <skills>math</skills>
  <skills>logic</skills>
</root>

রুট এলিমেন্ট ফিল্ড person-এ পরিবর্তন করুন এবং মোড়ক <person> / </person> হয়ে যায় — ভেতরের কাঠামো অস্পর্শিত থাকে।

XML → JSON#

XML → JSON-এ স্যুইচ করুন এবং নমুনা লোড করুন:

<?xml version="1.0"?>
<root><name>Ada</name><age>36</age></root>

বাইরের <root> ছিন্ন করা হয়, এবং ভেতরের এলিমেন্টগুলো JSON প্রোপার্টিতে পরিণত হয়, 36 একটি সংখ্যা হিসেবে চেনা হয়:

{
  "name": "Ada",
  "age": 36
}

অ্যাট্রিবিউটগুলোও সংরক্ষিত হয়। <a id="7">label</a>-এর মতো একটি এলিমেন্ট { "@id": "7", "#text": "label" } তৈরি করে — অ্যাট্রিবিউট @id-এর অধীনে, টেক্সট #text-এর অধীনে, এবং কোনোটাই হারায় না।

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

আমার JSON অ্যারে কেন একটি মোড়কের ভেতরে আইটেম সহ একটি XML এলিমেন্টের বদলে পুনরাবৃত্ত এলিমেন্ট হয়ে যায়?#

XML একটি তালিকা এভাবেই উপস্থাপন করে: কোনো “অ্যারে” কনস্ট্রাক্ট নেই, তাই প্রতিটি এন্ট্রিকে অবশ্যই একই ট্যাগ নাম সহ তার নিজস্ব এলিমেন্ট হতে হবে। কী skills-এর অধীনে একটি JSON অ্যারে ["math", "logic"] তাই দুটি ভাই <skills> এলিমেন্টে পরিণত হয়, চিলড্রেন ধারণকারী একটি একক <skills> নয়। এটি মানক, স্কিমা-বান্ধব ম্যাপিং — XML কনজিউমাররা এটিই প্রত্যাশা করে।

XML → JSON-এ, আমার বাইরের এলিমেন্ট কোথায় গেল?#

কনভার্টার একক রুট স্বয়ংক্রিয়ভাবে আনর‍্যাপ করে। XML ঠিক একটি শীর্ষ-স্তরের এলিমেন্টে বাধ্য করে, কিন্তু JSON-এ সেই মোড়কটি সাধারণত অপ্রয়োজনীয় — <root><name>Ada</name></root>-এ root JSON-এর প্রয়োজন এমন কোনো তথ্য বহন করে না। এটি ছিন্ন করা আপনাকে সরাসরি অর্থপূর্ণ ভেতরের মান দেয়। আপনার যদি সত্যিই রুট সংরক্ষণ প্রয়োজন হয়, তবে তা একটি সাধারণ এলিমেন্ট হিসেবে রেখে নাম দিয়ে অ্যাক্সেস করুন।

36 আউটপুটে কেন স্ট্রিং নয়, সংখ্যা?#

XML-এ কোনো আলাদা সংখ্যা প্রকার নেই — ট্যাগগুলোর মধ্যে সবকিছুই টেক্সট। পার্সার সংখ্যাত্মক রূপান্তর প্রয়োগ করে, তাই এমন একটি এলিমেন্ট যার টেক্সট সংখ্যা-সদৃশ (36, 3.14) তা JSON সংখ্যা হিসেবে ফেরত আসে। এটি সাধারণ ডেটার জন্য সুবিধাজনক, কিন্তু এর অর্থ এও যে একটি প্রোডাক্ট কোড <code>007</code>-এর মতো মান তার শূন্য হারাবে — এমন মানগুলো অ্যাট্রিবিউট হিসেবে সংরক্ষণ করুন বা স্ট্রিং হিসেবে গ্রহণ করুন।

এটি কি যেকোনো XML নথি কনভার্ট করতে পারে?#

সুগঠিত XML হ্যাঁ, ট্যাগে নেমস্পেস, অ্যাট্রিবিউট, সেলফ-ক্লোজিং এলিমেন্ট এবং ডিক্লারেশন সহ। এটি DTD সমাধান করে না, স্কিমার বিরুদ্ধে যাচাই করে না, বা বাহ্যিক এন্টিটি আনে না — প্রক্রিয়াকরণ স্থানীয় এবং শুধু-টেক্সট, যার অর্থ এটি এমন নথি পেস্ট করার জন্য নিরাপদ যা আপনি সম্পূর্ণ বিশ্বাস করেন না।