← সব টুল

JSON থেকে XML কনভার্টার

ব্রাউজারে তাৎক্ষণিকভাবে JSON থেকে XML ও XML থেকে JSON রূপান্তর করুন। শুধু স্থানীয় ও প্রাইভেট, সাথে অ্যাট্রিবিউট, অ্যারে, নেমস্পেস ও সমস্যা নিয়ে নোট।

JSON থেকে XML এবং ফিরে: দুই ডেটা জগতের জন্য একটি ব্যবহারিক কনভার্টার

বেশিরভাগ ডেভেলপার চান বা না চান XML এবং JSON উভয়ের সাথেই কাজ করেন। আধুনিক ওয়েব API প্রায় একচেটিয়াভাবে JSON বলে, কিন্তু আপনি যেই মুহূর্তে একটি ব্যাংক, একটি বীমা কোম্পানি, একটি সরকারি এন্ডপয়েন্ট, একটি এন্টারপ্রাইজ ERP, বা একটি পুরনো SOAP সার্ভিস স্পর্শ করেন, XML আবার দেখা দেয়। এই পেজের JSON থেকে XML কনভার্টার সরাসরি আপনার ব্রাউজারে JSON-কে XML-এ এবং XML-কে আবার JSON-এ পরিণত করে, তাই আপনি সংবেদনশীল পেলোড কোনো রিমোট সার্ভিসে কপি না করেই এই দুই ফরম্যাটের মধ্যে যেতে পারেন।

একটি গাঢ় ইন্ডিগো পটভূমিতে জ্বলজ্বলে নেস্টেড JSON ব্রেস ব্র্যাকেটেড XML ট্যাগের একটি গাছে রূপান্তরিত হচ্ছে
JSON অবজেক্ট ও XML ট্যাগ গাছ ভিন্ন আকারে একই ডেটা বর্ণনা করে।

XML ও JSON আসলে কী

XML (Extensible Markup Language) নেস্টেড ট্যাগ, অ্যাট্রিবিউট, এবং নেমস্পেসের চারপাশে তৈরি একটি মার্কআপ ফরম্যাট। এটি ডকুমেন্ট ও কাঠামোগত ডেটা বিনিময়ের জন্য ডিজাইন করা হয়েছিল, এবং এটি অনেক যন্ত্রপাতি বহন করে: স্কিমা (XSD), নেমস্পেস, প্রসেসিং নির্দেশনা, মন্তব্য, CDATA সেকশন, এবং উপরে একটি আনুষ্ঠানিক ঘোষণা। এই সমৃদ্ধিই কারণ কেন XML এখনও পুরনো ও এন্টারপ্রাইজ সিস্টেমে আধিপত্য বিস্তার করে। আপনি এটি SOAP ওয়েব সার্ভিস, RSS ও Atom ফিড, কনফিগারেশন ফাইল (Spring, Maven, .NET অ্যাপ কনফিগ), অফিস ডকুমেন্ট ফরম্যাট, এবং SWIFT ও ISO 20022-এর মতো আর্থিক মেসেজিং স্ট্যান্ডার্ডে পাবেন, যেখানে ব্যাংক ও বীমা কোম্পানি এখনও প্রতিদিন XML বিনিময় করে।

JSON (JavaScript Object Notation) অনেক সহজ: কী/ভ্যালু জোড়া, অ্যারে, স্ট্রিং, সংখ্যা, বুলিয়ান, এবং নাল সহ অবজেক্ট। এটি প্রায় প্রতিটি প্রোগ্রামিং ভাষার ডেটা কাঠামোর সাথে প্রায় এক-থেকে-এক ম্যাপ হয়, যে কারণেই এটি আধুনিক ওয়েব API, REST এন্ডপয়েন্ট, মোবাইল অ্যাপ, এবং package.json-এর মতো কনফিগ ফাইলের দখল নিয়েছে। JSON সাধারণত সমতুল্য XML-এর চেয়ে ৩০ থেকে ৫০ শতাংশ ছোট এবং লক্ষণীয়ভাবে দ্রুত পার্স হয়, আংশিকভাবে কারণ এটি ক্লোজিং ট্যাগ ও অ্যাট্রিবিউট যন্ত্রপাতি বাদ দেয় যা XML-কে বিস্তারিত করে তোলে।

রূপান্তরের জন্য গুরুত্বপূর্ণ মূল পার্থক্যগুলো

দুটি ফরম্যাট একে অপরের উপর ম্যাপ হওয়ার জন্য যথেষ্ট মিলে যায়, কিন্তু পরিষ্কারভাবে নয়। কয়েকটি কাঠামোগত পার্থক্য প্রায় সব ঘর্ষণের কারণ:

  • অ্যাট্রিবিউট বনাম চাইল্ড নোড। XML <user id="1"> (একটি অ্যাট্রিবিউট) এবং <user><id>1</id></user> (একটি চাইল্ড এলিমেন্ট)-এর মধ্যে পার্থক্য করে। JSON-এর এমন কোনো ধারণা নেই, তাই কনভার্টারগুলো একটি উদ্ভাবন করে। প্রথানুসারে অ্যাট্রিবিউটগুলো @attributes-এর মতো একটি কী-তে ভাঁজ করা হয় বা @ দিয়ে প্রিফিক্স করা হয়, যখন এলিমেন্ট টেক্সট #text-এর মতো একটি কী-তে পড়ে।
  • অ্যারে। JSON-এর নেটিভ অ্যারে আছে। XML-এর নেই। XML-এ একটি তালিকা মানে শুধু একই ট্যাগ পুনরাবৃত্তি, যেমন সারিতে তিনটি <item> এলিমেন্ট। কনভার্টারগুলোকে অনুমান করতে হয় কখন পুনরাবৃত্ত সিবলিং একটি JSON অ্যারেতে ভেঙে যাওয়া উচিত, আর কখন একটি একক এলিমেন্ট একটি সাধারণ অবজেক্ট থেকে যাওয়া উচিত।
  • নেমস্পেস। XML স্কিমা জুড়ে নাম সংঘর্ষ এড়াতে নেমস্পেস (xmlns:soap প্রিফিক্স) ব্যবহার করে। JSON-এর সমতুল্য কিছু নেই, তাই প্রিফিক্সগুলো হয় কী-এর ভেতরে আক্ষরিক অক্ষর হিসেবে টিকে থাকে বা সরানো হয়।
  • বিস্তারিততা ও মেটাডেটা। XML অ্যাট্রিবিউটের মাধ্যমে একটি নোডে মেটাডেটা সংযুক্ত করতে পারে; JSON সবকিছু কী ও ভ্যালু হিসেবে প্রকাশ করে। এটি JSON-কে আরও কমপ্যাক্ট ও পড়া সহজ করে তোলে, যখন XML XSD স্কিমার মাধ্যমে যাচাইকরণ ক্ষমতা ধরে রাখে।

রূপান্তরের যেসব সমস্যা লক্ষ্য রাখতে হবে

JSON থেকে XML থেকে JSON রাউন্ড-ট্রিপিং করে অভিন্ন ফলাফল আশা করা ধ্রুপদী ভুল। রূপান্তরটি উভয় দিকেই লসি, যদি না আপনি নিয়মগুলো নিয়ন্ত্রণ করেন। এগুলো মাথায় রাখুন:

  • অ্যাট্রিবিউট বিকৃত হয়ে যায়। আপনি যখন JSON-কে XML-এ রূপান্তর করেন, টুলটির কোন কী অ্যাট্রিবিউট আর কোনটি এলিমেন্ট হবে তার একটি নিয়ম প্রয়োজন। আপনি যখন উল্টো দিকে যান, অ্যাট্রিবিউটগুলোকে কোথাও অবতরণ করতে হয়, আর সেই "কোথাও" (@ প্রিফিক্স, @attributes ব্লক) লাইব্রেরির মধ্যে ভিন্ন হয়। একটি ডাউনস্ট্রিম পার্সার ভিন্ন কনভেনশন আশা করলে, কিছু না হারালেও ডেটা ভুল দেখায়।
  • একক এলিমেন্ট বনাম অ্যারে। একটি <item>-সহ একটি XML ফিড একটি JSON অবজেক্ট তৈরি করে; দুটি আইটেম সহ একই ফিড একটি JSON অ্যারে তৈরি করে। একটি অ্যারে ধরে নেওয়া কোড একক-আইটেম কেসে ভেঙে যায়। এটি RSS ও SOAP পার্সিং বাগের একটি সাধারণ উৎস।
  • নেমস্পেস ফাঁস বা উধাও হয়ে যায়। টুলের উপর নির্ভর করে, soap:Body আক্ষরিকভাবে soap:Body নামে একটি কী হয়ে যেতে পারে, বা প্রিফিক্সটি সম্পূর্ণভাবে বাদ পড়তে পারে, ডকুমেন্টের অর্থ পরিবর্তন করে।
  • মিশ্র কন্টেন্ট ও টাইপ। XML সবকিছু টেক্সট হিসেবে গণ্য করে, তাই true বা 42-এর মতো একটি ভ্যালু JSON-এ রূপান্তরের পরেও একটি স্ট্রিং থেকে যেতে পারে, যখন বিপরীত দিকে মন্তব্য বা CDATA-র জন্য কোনো নেটিভ জায়গা নেই।
সায়ান ও গোল্ড আলোর তৈরি বিমূর্ত মার্কআপ নোড দিয়ে সেতুবদ্ধ দুটি কাঠামোগত ডেটা গাছ
ফরম্যাটের মধ্যে ম্যাপিং মানে অ্যাট্রিবিউট, অ্যারে ও নেমস্পেস কীভাবে অনুবাদ হবে তা ঠিক করা।

কেন শুধু স্থানীয় রূপান্তর গুরুত্বপূর্ণ

JSON ও XML পেলোড প্রায়ই একজন ডেভেলপার যা সামলান তার মধ্যে সবচেয়ে সংবেদনশীল: টোকেন সহ API রেসপন্স, অ্যাকাউন্ট নম্বর সহ SOAP মেসেজ, ক্রেডেনশিয়াল সহ কনফিগ ফাইল। আপনার ব্রাউজারে চলা একটি কনভার্টার কখনো এর কোনোটাই আপলোড করে না। পার্সিং ও সিরিয়ালাইজেশন আপনার মেশিনে ঘটে, কিছুই সার্ভারে পাঠানো হয় না, এবং পেজ লোড হওয়ার পরে আপনি টুলটি অফলাইনেও ব্যবহার করতে পারেন। প্রোডাকশন ডেটা ডিবাগ করা বা কমপ্লায়েন্স নিয়মের অধীনে থাকা যেকোনো কিছুর জন্য, এটাই একটি নিরাপদ দ্রুত চেক এবং একটি দুর্ঘটনাজনিত ডেটা লিকের মধ্যে পার্থক্য।

ফলাফলটি পরে পরিষ্কার করতে হলে, এটি আমাদের অন্যান্য ডেটা কনভার্টার-এর সাথে জোড়া লাগান, বা পাইপলাইনের পরবর্তী টুলে হস্তান্তর করার আগে JSON ফরম্যাটার দিয়ে আপনার আউটপুট গুছিয়ে নিন।

প্রায়শই জিজ্ঞাসিত প্রশ্ন

কনভার্টার কি আমার JSON বা XML কোথাও আপলোড করে?

না। JSON থেকে XML এবং XML থেকে JSON উভয় রূপান্তরই সম্পূর্ণভাবে আপনার ব্রাউজারে চলে। আপনার ডেটা কখনো আপনার ডিভাইস ছেড়ে যায় না এবং পেজ লোড হওয়ার পরে টুলটি অফলাইনে কাজ করে।

JSON-এ রূপান্তর করার সময় XML অ্যাট্রিবিউট কীভাবে সামলানো হয়?

XML অ্যাট্রিবিউটগুলো একটি নির্দিষ্ট কী-তে রাখা হয়, সাধারণত একটি অ্যাট সাইন দিয়ে প্রিফিক্স করা বা একটি অ্যাট্রিবিউট ব্লকের নিচে গ্রুপ করা, কারণ JSON-এর কোনো নেটিভ অ্যাট্রিবিউট ধারণা নেই। এলিমেন্ট টেক্সট কন্টেন্ট আলাদাভাবে সংরক্ষিত হয় যাতে উভয়ই রূপান্তর সহ্য করে।

আমার একক XML এলিমেন্ট কেন অ্যারের বদলে একটি অবজেক্ট হয়ে গেল?

XML-এর কোনো নেটিভ অ্যারে নেই, তাই একটি তালিকা শুধু একটি পুনরাবৃত্ত ট্যাগ। শুধুমাত্র একটি এলিমেন্ট উপস্থিত থাকলে, কনভার্টারগুলো এটিকে একটি সাধারণ অবজেক্ট থেকে আলাদা করতে পারে না, তাই এটি একটি অবজেক্ট হয়ে যায়। একই ট্যাগ নাম সহ দুই বা ততোধিক সিবলিং একটি JSON অ্যারেতে ভেঙে যায়।

soap বা xmlns-এর মতো XML নেমস্পেসের কী হয়?

JSON-এর XML নেমস্পেসের কোনো সমতুল্য নেই। রূপান্তরের উপর নির্ভর করে, প্রিফিক্সটি কী-এর ভেতরে আক্ষরিক টেক্সট হিসেবে রাখা হয় বা সরানো হয়। আপনার ডাউনস্ট্রিম কনজিউমার নেমস্পেস প্রিফিক্সের উপর নির্ভর করলে আউটপুট পরীক্ষা করুন।

আমি কি JSON-কে আবার XML-এ রূপান্তর করে মূল ডকুমেন্ট পেতে পারি?

সবসময় ঠিক নয়। রূপান্তর উভয় দিকেই লসি কারণ মন্তব্য, CDATA, এবং অ্যাট্রিবিউট বনাম এলিমেন্ট পার্থক্যের মতো XML বৈশিষ্ট্যের কোনো পরিষ্কার JSON প্রতিরূপ নেই। উভয় দিকে নামকরণ নিয়ম নিয়ন্ত্রণ করলে রাউন্ড-ট্রিপিং সবচেয়ে ভালো কাজ করে।

JSON-এর তুলনায় XML এখনও কোথায় ব্যবহৃত হয়?

XML পুরনো ও এন্টারপ্রাইজ সিস্টেমে থাকে: SOAP ওয়েব সার্ভিস, RSS ও Atom ফিড, কনফিগারেশন ফাইল, এবং SWIFT ও ISO 20022-এর মতো আর্থিক মেসেজিং। JSON আধুনিক ওয়েব API, REST এন্ডপয়েন্ট এবং মোবাইল অ্যাপে আধিপত্য বিস্তার করে।