← Ҳамаи асбобҳо

Мубаддилкунандаи JSON ба XML

JSON-ро ба XML ва баръакс дарҳол дар браузери худ табдил диҳед. Танҳо маҳаллӣ ва хусусӣ, бо шарҳҳо оид ба атрибутҳо, массивҳо ва фазои номҳо.

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) хеле соддатар аст: объектҳо бо ҷуфтҳои калид/арзиш, массивҳо, сатрҳо, рақамҳо, буливҳо ва null. Он қариб як-ба-як ба сохторҳои маълумоти қариб ҳар забони барномасозӣ мувофиқат мекунад, ки маҳз ба ҳамин сабаб он API-ҳои муосири веб, нуқтаҳои ниҳоии REST, барномаҳои мобилӣ ва файлҳои танзимот ба монанди package.json-ро ишғол кард. JSON одатан 30 то 50 фоиз аз 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) дар байни китобхонаҳо фарқ мекунад. Агар таҳлилгари поёноб анъанаи дигарро интизор бошад, маълумот нодуруст менамояд, гарчанде ки ҳеҷ чиз гум нашудааст.
  • Унсури ягона дар муқобили массив. Хӯрокаи XML бо як <item> объекти JSON-ро тавлид мекунад; ҳамон хӯрока бо ду ашё массиви JSON-ро тавлид мекунад. Коде, ки массивро тахмин мекунад, дар ҳолати як-ашёро мешиканад. Ин манбаи маъмули хатогиҳои таҳлили RSS ва SOAP мебошад.
  • Фазоҳои ном ништ мекунанд ё нест мешаванд. Вобаста ба абзор, soap:Body метавонад ба калиде, ки бо номи soap:Body луоалӣ номида шудааст, табдил ёбад ё пешванд комилан канда шавад ва маънои ҳуҷҷатро тағйир диҳад.
  • Мазмуни омехта ва навъҳо. XML ҳама чизро ҳамчун матн муносибат мекунад, бинобар ин арзише ба монанди true ё 42 метавонад пас аз табдил ба JSON сатр бимонад, дар ҳоле ки самти баръакс ҳеҷ ҷои бумӣ барои шарҳ ё CDATA надорад.
Ду дарахти сохтории маълумот бо гиреҳҳои маркиревкии абстрактии сохта аз рӯшноии кабуд ва тиллоӣ пайваст шудаанд
Харитагирӣ дар байни форматҳо маънои қарор кардани он дорад, ки атрибутҳо, массивҳо ва фазоҳои ном чӣ тавр тарҷума мешаванд.

Чаро табдили танҳо-маҳаллӣ аҳамият дорад

Борҳои JSON ва XML аксар вақт ҳассостарин чизест, ки барномасоз коркард мекунад: посухҳои API бо токенҳо, паёмҳои SOAP бо рақамҳои ҳисоб, файлҳои танзимот бо маълумоти воридшавӣ. Мубаддиле, ки дар браузери шумо кор мекунад, ҳеҷ гоҳ ҳеҷ яке аз онҳоро бор намекунад. Таҳлил ва серияламоъ дар мошини шумо сурат мегиранд, ҳеҷ чиз ба сервер фиристода намешавад ва шумо метавонед абзорро офлайн пас аз бор шудани саҳифа истифода баред. Барои ислоҳи маълумоти истеҳсолӣ ё ҳар чизе таҳти реҷаи мутобиқат, ин фарқи байни тафтиши тезу бехатар ва ништи тасодуфии маълумот мебошад.

Агар шумо бояд натиҷаро баъдан тоза кунед, инро бо дигар мубаддилони маълумот-и мо ҷуфт кунед ё баромади худро бо форматкунандаи JSON тартиб диҳед, пеш аз он ки онро ба абзори навбатии лӯлаи худ супоред.

Саволҳои маъмул

Оё мубаддил JSON ё XML-и маро ба ҷое бор мекунад?

Не. Ҳам табдили JSON ба XML ва ҳам XML ба JSON комилан дар браузери шумо кор мекунад. Маълумоти шумо ҳеҷ гоҳ дастгоҳи шуморо тарк намекунад ва абзор пас аз бор шудани саҳифа офлайн кор мекунад.

Атрибутҳои XML ҳангоми табдил ба JSON чӣ тавр коркард мешаванд?

Атрибутҳои XML дар калиди махсусе ҷойгир карда мешаванд, ки маъмулан бо аломати "at" пешванд карда шудааст ё дар блоки атрибутҳо гурӯҳбандӣ шудааст, зеро JSON ҳеҷ мафҳуми бумии атрибут надорад. Мазмуни матни унсур алоҳида захира карда мешавад, то ҳарду аз табдил зинда монанд.

Чаро унсури ягонаи XML-и ман ба объект табдил ёфт, на массив?

XML ҳеҷ массиви бумӣ надорад, бинобар ин рӯйхат танҳо теги такрорист. Вақте ки танҳо як унсур мавҷуд аст, мубаддилон наметавонанд онро аз объекти муқаррарӣ фарқ кунанд, бинобар ин он объект мешавад. Ду ё бештар хоҳарону бародарони бо ҳамон номи тег ба массиви JSON фушурда мешаванд.

Ба фазоҳои номи XML ба монанди soap ё xmlns чӣ мешавад?

JSON ҳеҷ муодили фазоҳои номи XML надорад. Вобаста ба табдил, пешванд ҳамчун матни луоалӣ дар дохили калид нигоҳ дошта мешавад ё канда мешавад. Агар истеъмолкунандаи поёноби шумо ба пешвандҳои фазои ном такя кунад, баромадро тафтиш кунед.

Оё метавонам JSON-ро баргашта ба XML табдил диҳам ва ҳуҷҷати аслиро гирам?

На ҳамеша дуруст. Табдил дар ҳарду самт талафотнок аст, зеро хусусиятҳои XML ба монанди шарҳҳо, CDATA ва фарқи атрибут дар муқобили унсур ҳеҷ муодили тозаи JSON надоранд. Сафари даврӣ беҳтарин вақте кор мекунад, ки шумо қоидаҳои номгузориро дар ҳарду тараф назорат кунед.

XML нисбат ба JSON дар куҷо ҳанӯз истифода мешавад?

XML дар системаҳои кӯҳна ва корхонавӣ зиндагӣ мекунад: хидматҳои вебии SOAP, хӯрокаҳои RSS ва Atom, файлҳои танзимот ва паёмрасонии молиявӣ ба монанди SWIFT ва ISO 20022. JSON дар API-ҳои муосири веб, нуқтаҳои ниҳоии REST ва барномаҳои мобилӣ ҳукмфармост.