← Dukan kayan aiki

Mai Canza JSON zuwa XML

Canza JSON zuwa XML da XML zuwa JSON nan take a bincikenka. Na gida kawai kuma na zaman kansa, tare da bayanai kan halaye, jerin, sunayen fage da matsaloli.

JSON zuwa XML da dawowa: mai mayarwa mai amfani ga duniyoyin bayanai biyu

Yawancin masu haɓaka software suna aiki da XML da JSON duk ko suna so ko a'a. API na yanar gizo na zamani suna magana da JSON kusan gaba ɗaya, amma da zaran ka taɓa banki, kamfanin inshora, wata hanyar gwamnati, ERP na kamfani babba, ko tsohuwar sabis ta SOAP, XML tana sake bayyana. Mai mayarwa na JSON zuwa XML a wannan shafi yana mayar da JSON zuwa XML da XML komawa zuwa JSON kai tsaye a mai binciken ka, don haka za ka iya motsawa tsakanin waɗannan tsare-tsare biyu ba tare da kwafin payloads masu sirri zuwa wata sabis ta nesa ba.

Baka-bakan JSON masu hade-hade masu haske suna canzawa zuwa itace na alamun XML masu lankwan a kan bango mai duhun indigo
Abubuwan JSON da itatuwan alamun XML suna bayyana bayani iri ɗaya ta siffofi daban-daban.

Menene XML da JSON a hakika

XML (Extensible Markup Language) tsari ne na markup da aka gina kewaye da alamu masu hade-hade, sifofi (attributes), da sararin suna (namespaces). An tsara ta don takardu da musayar bayanai mai tsari, kuma tana ɗauke da injina masu yawa: schemas (XSD), sararin suna, umarnin sarrafawa, sharhi, sassan CDATA, da sanarwa ta hukuma a saman. Wannan arzikin shi ne dalilin da ya sa XML har yanzu take mamaye tsofaffi da tsarin manyan kamfanoni. Kana samun ta a sabis na yanar gizo na SOAP, RSS da Atom feeds, fayilolin daidaitawa (Spring, Maven, .NET app configs), tsare-tsaren takardun ofis, da ma'auni na saƙon kuɗi kamar SWIFT da ISO 20022, inda bankuna da kamfanonin inshora ke ci gaba da musayar XML kowace rana.

JSON (JavaScript Object Notation) ta fi sauƙi sosai: abubuwa masu maɓalli/daraja, jerurruka, jerin haruffa, lambobi, ƙimar gaskiya, da null. Tana dacewa kusan ɗaya-zuwa-ɗaya da tsare-tsaren bayanai na kusan kowane harshen shirye-shirye, wanda shi ne ainihin dalilin da ya sa ta mamaye API na yanar gizo na zamani, hanyoyin REST, manhajojin waya, da fayilolin daidaitawa kamar package.json. JSON yawanci ta fi ƙarama da kashi 30 zuwa 50 cikin ɗari fiye da XML dacewa da ita kuma tana fassara da sauri sosai, wani bangare saboda tana zubar da alamun rufewa da injinan sifa da ke sanya XML mai yawan kalmomi.

Manyan bambance-bambancen da suka fi muhimmanci ga mayarwa

Tsare-tsaren biyu suna haɗuwa isashe don su dace da juna, amma ba a tsafta ba. 'Yan bambance-bambancen tsari ne ke haifar da kusan dukkan rikici:

  • Sifofi (attributes) sabanin nodes na yara. XML tana bambanta tsakanin <user id="1"> (sifa) da <user><id>1</id></user> (abu na yara). JSON ba ta da irin wannan ra'ayi, don haka masu mayarwa suna ƙirƙirar ɗaya. Bisa al'ada ana lulluɓe sifofi cikin maɓalli kamar @attributes ko a rufe su da @, yayin da rubutun element ke saukowa a maɓalli kamar #text.
  • Jerurruka. JSON tana da jerurruka na asali. XML ba ta da su. Jeri a XML kawai alama ce guda ɗaya da aka maimaita, kamar element uku na <item> a jere. Masu mayarwa dole ne su hasashe lokacin da 'yan uwa masu maimaitawa ya kamata su rushe zuwa jeri na JSON, da lokacin da element guda ɗaya ya kamata ya ci gaba da zama abu na yau da kullum.
  • Sararin suna (namespaces). XML tana amfani da sararin suna (prefixes na xmlns:soap) don guje wa karo tsakanin schemas. JSON ba ta da wani abu daidai da shi, don haka prefixes ko dai suna tsira a matsayin haruffa a zahiri a cikin maɓalli ko a cire su.
  • Yawan kalmomi da bayanan metadata. XML na iya haɗe metadata zuwa node ta sifofi; JSON tana bayyana komai a matsayin maɓalli da daraja. Wannan yana sanya JSON ta fi ƙarama da sauƙin karantawa, yayin da XML ke riƙe da ƙarfin tabbatarwa ta hanyar schemas na XSD.

Matsalolin mayarwa da ya kamata a lura

Tafiya daga JSON zuwa XML zuwa JSON da tsammanin sakamako daidai ita ce kuskuren gargajiya. Mayarwar tana da asara a bangarori biyu sai idan ka sarrafa dokoki. Ka lura da waɗannan:

  • Sifofi suna gurɓacewa. Idan ka mayar da JSON zuwa XML, kayan aikin yana bukatar doka don wace maɓallai ke zama sifofi sabanin elements. Idan ka je hanyar akasin, sifofi dole ne su sauka a wani wuri, kuma wancan "wuri" (prefix na @, block na @attributes) yana bambanta tsakanin laburare. Idan mai fassara na gaba yana tsammanin wata al'ada dabam, bayanin yana bayyana ba daidai ba ko da yake babu abin da aka rasa.
  • Element guda ɗaya sabanin jeri. Feed na XML mai <item> guda ɗaya yana samar da abu na JSON; wannan feed ɗin da abu biyu yana samar da jeri na JSON. Lambar da ke hasashen jeri tana karyewa a yanayin abu guda ɗaya. Wannan tushen ne na yau da kullum na kwaruruka na fassara RSS da SOAP.
  • Sararin suna suna zubewa ko ɓacewa. Ya danganta da kayan aikin, soap:Body na iya zama maɓalli mai suna a zahiri soap:Body, ko kuma prefix ɗin na iya ɓacewa gaba ɗaya, wanda ke canza ma'anar takardar.
  • Abun ciki cakuɗe da nau'ukan bayani. XML tana ɗaukan komai a matsayin rubutu, don haka darajar kamar true ko 42 na iya ci gaba da zama jerin haruffa bayan mayarwa zuwa JSON, yayin da hanyar akasin ba ta da wuri na asali ga sharhi ko CDATA.
Itatuwan bayanai masu tsari guda biyu an haɗa su da nodes na markup masu haske na cyan da zinariya
Taswirawa tsakanin tsare-tsare yana nufin yanke shawara yadda sifofi, jerurruka, da sararin suna ke fassara.

Me ya sa mayarwa ta gida-kawai ke da muhimmanci

Payloads na JSON da XML galibi su ne abu mafi sirri da mai haɓaka software ke ɗauka: martanin API mai alamu (tokens), saƙonnin SOAP mai lambobin asusu, fayilolin daidaitawa mai bayanan shiga. Mai mayarwa da ke gudana a mai binciken ka ba ya taɓa loda ko ɗaya daga cikin waɗannan. Fassarawa da sanya lambar suna faruwa a na'urarka, babu abin da ake aikawa zuwa server, kuma za ka iya amfani da kayan aikin ba tare da intanet ba da zarar shafin ya loda. Don gyara bayanan production ko wani abu a ƙarƙashin tsarin bin doka, wannan shi ne bambanci tsakanin bincike mai sauri mai aminci da zubewar bayanai ba zato ba tsammani.

Idan kana bukatar ka tsaftace sakamakon daga baya, ka haɗa wannan da sauran masu mayar da bayanai namu, ko ka tsara fitarwarka da mai tsara JSON kafin ka miƙa ta ga kayan aikin gaba a jerin aikinka.

Tambayoyin da ake yawan yi

Mai mayarwa yana loda JSON ko XML ɗina zuwa wani wuri?

A'a. Duka mayarwar JSON zuwa XML da XML zuwa JSON suna gudana gaba ɗaya a mai binciken ka. Bayaninka ba ya taɓa barin na'urarka kuma kayan aikin yana aiki ba tare da intanet ba bayan shafin ya loda.

Yaya ake sarrafa sifofin XML lokacin mayarwa zuwa JSON?

Ana sanya sifofin XML a cikin maɓalli na musamman, galibi ana rufe su da alamar @ ko a haɗa su ƙarƙashin block na sifofi, tunda JSON ba ta da ra'ayin sifa na asali. Ana adana abun ciki na rubutun element daban don duka su tsira daga mayarwa.

Me ya sa element guda ɗaya na XML ya zama abu maimakon jeri?

XML ba ta da jerurruka na asali, don haka jeri kawai alama ce da aka maimaita. Idan element guda ɗaya kawai ke nan, masu mayarwa ba za su iya bambanta shi da abu na yau da kullum ba, don haka yana zama abu. 'Yan uwa biyu ko fiye da suna alama ɗaya suna rushewa zuwa jeri na JSON.

Me ke faruwa da sararin suna na XML kamar soap ko xmlns?

JSON ba ta da abin da ya dace da sararin suna na XML. Ya danganta da mayarwar, ana riƙe prefix a matsayin rubutu a zahiri a cikin maɓalli ko a cire shi. Ka duba fitarwar idan mai amfani da na gaba yana dogaro da prefixes na sararin suna.

Zan iya mayar da JSON komawa zuwa XML in samu takardar asali?

Ba koyaushe daidai ba. Mayarwa tana da asara a bangarori biyu domin sifofin XML kamar sharhi, CDATA, da bambanci tsakanin sifa da element ba su da wani abu daidai da su a JSON. Tafiya zuwa da dawowa tana aiki mafi kyau lokacin da ka sarrafa dokokin sunaye a bangarorin biyu.

A ina ake amfani da XML har yanzu idan aka kwatanta da JSON?

XML tana zama a tsofaffi da tsarin manyan kamfanoni: sabis na yanar gizo na SOAP, RSS da Atom feeds, fayilolin daidaitawa, da saƙon kuɗi kamar SWIFT da ISO 20022. JSON tana mamaye API na yanar gizo na zamani, hanyoyin REST, da manhajojin waya.