Menene canzawar XML ↔ JSON?
XML (Extensible Markup Language) tsari ne na rubutu mai tag don bayanai masu tsari. Za ka ganshi a cikin sabis na SOAP, ciyarwa na RSS da Atom, bayanan kiwon lafiya na HL7 FHIR, faylolin sitemap.xml, da faylolin tsari da suka zo tare da Maven, Spring, da Android Gradle. JSON (JavaScript Object Notation, da RFC 8259 ya bayyana) yana bayanin irin wannan bayanai masu haɗa, amma da kewaye da arrays maimakon buɗewar da rufewar tags. JSON shine abin da kusan duk REST API ke magana da shi a yau, kuma siffa ta ƙimar asali ce ta kowane lokacin burauzar. Canza tsakanin tsarin biyu ɗayan waɗancan ayyukan ne wanda ke kama kamar sauki har sai ka yi cikin sifofin, abun ciki mai gauraye, yara masu maimaitawa, da CDATA.
Yadda taswirar XML ↔ JSON ke aiki?
Kowane canzawa yana gudana a gida a cikin burauzarka ta amfani da ɗakin karatu na fast-xml-parser da aka haɗa (MIT, sigar 4.x). Ƙa'idojin taswirar mafi girma sune:
- Abin zuwa makulli: kowane sunan abin XML ya zama makullin abin JSON.
<user><name>Alice</name></user>yana zama{"user":{"name":"Alice"}}. - Sifa zuwa makulli mai prefix: ana adana sifa ƙarƙashin makulli da aka kafa ta ƙara prefix da aka zaɓa. Da prefix
@,<user id="1">yana samar da{"user":{"@id":"1"}}. - Abun ciki na rubutu zuwa makullin node-rubutu: lokacin da abin ke da sifofin biyu da rubutu, rubutun ya sauka ƙarƙashin makullin node-rubutu da aka zaɓa.
<price currency="USD">9.99</price>tare da makulli#textyana samar da{"price":{"@currency":"USD","#text":"9.99"}}. - Yara masu maimaitawa zuwa array: lokacin da Tilasta array don tags ɗan yaro masu maimaitawa a kan, abubuwa 'yan uwan juna da yawa masu suna guda ɗaya suna haɗa zuwa array na JSON.
<items><item>A</item><item>B</item></items>ya zama{"items":{"item":["A","B"]}}. - Sassa na CDATA: ana adana rubutun mai ƙanƙanta a cikin
<![CDATA[…]]>ƙarƙashin makullin#cdatadon a'azaman angle brackets da ampersands ba a sake tserewa su a lokacin tafiyar zuwa gida. - JSON zuwa XML yana juyar da taswirar: makullan abin suna zama abubuwa, makullan da aka sanya prefix suna zama sifofin, kuma arrays suna faɗaɗa zuwa abubuwa 'yan uwan juna masu maimaitawa.
Me ya sa canza XML da JSON da wannan kayan aiki?
- Bayanan ka suna zama a injinar ka. Kowane bincike da kowane gini yana gudana a cikin mahallin JavaScript na wannan shafi. Ɗumbin ɗan adam na FHIR, jakar tabbatarwa ta SOAP, faylolin tsari masu sirranci, fitar ɗin kuɗin shiga — babu daga cikinsu da ke taɓa maɓallinmu, saboda babu mataki na loda a cikin hanyar lambar. Buɗe allo na cibiyar sadarwa ka kalla.
- SOAP na gargajiya zuwa gaban REST-farko shine mafi gari buƙata da muke ji. Banki ko mai inshora yana bayyana ƙarshen SOAP wanda ba za a yi ritaya ba shekaru; aikace-aikacer React ko Vue da ke kiransa ba ya son koyon XML. Liƙa jakar, kama JSON baya tare da sifofin da aka sanya prefix da sunayen sarari da aka adana, sakar abubuwan
Bodycikin ajiyar yanayin ka. - Masu cin nauyin RSS, Atom, da sitemap kuma suna amfana. Kundin podcast, mai haɗa labari, ko allon cikin gida wanda ke shigo da
sitemap.xmlna iya tsallake rubuta XML parser gaba ɗaya. Canza ciyarwa sau ɗaya, yi aiki da array na JSON, kuma lambar abokin ka ta kasance a cikin harshen da ya riga yana magana. - Fitar tsarin ya kammala jerin. Maven, Spring, Android Gradle, da ginin Ant na tsofaffi duk suna fitar da XML; kayan aikin asalin girgije a ƙarshen ɗaya (Terraform, Ansible, GitHub Actions, cloud-init) yana karanta JSON ko YAML. Canza a cikin burauzar maimakon gudanar da rubutun Python tare da dogara ta ɓangare na uku, musamman yana da amfani a cikin muhallin da aka keɓe inda liƙa cikin sabis na yanar gizo da ba a sani ba ba zai yiwu ba.
Menene ayyukan gari na canzawar XML ↔ JSON?
Haɗa XML da JSON yana zuwa a duk injiniyan haɗin gwiwa, kayan aikin API, da injiniyan bayanai. 'Yan tsarin ne suka mamaye aiki:
- Haɗin SOAP zuwa REST: fitar da nauyin aiki na
Bodydaga jakar SOAP da API na banki ko inshora na gargajiya ya dawo da shi kuma canza shi zuwa JSON don gani na React ko Vue ya iya cin shi ba tare da lauyin proxy na gefen mai mai gaba ba. - Bayanan kiwon lafiya na FHIR: canza ɗumbin XML na HL7 FHIR (tsarin da HHS/ONC da NHS Digital suka buƙata don musayar bayanai na asibiti) zuwa JSON don lodawa cikin tarin MongoDB Atlas ko ginshiƙi na PostgreSQL JSONB inda masu nazari za su iya tambayar su.
- Sarrafa sitemap da ciyarwa: juyar da
sitemap.xmlko ciyarwar RSS/Atom zuwa array na JSON don mai tsari na al'ada, ƙaramin bot na Slack, ko abin ado na allon sarrafa yana iya maimaita shigarwa ba tare da kawo XML parser a matsayin dogara ba.
Yaya tafiyar zuwa gida ta XML ↔ JSON ke kama?
Ɗauki misali mai ƙanƙanta. Liƙa <user id="1"><name>Alice</name></user> cikin shigarwa, saita prefix na sifa zuwa @, bar yanayin a kan XML zuwa JSON, kuma danna Canza. Fitarwa ita ce {"user":{"@id":"1","name":"Alice"}}. Juyar da yanayin zuwa JSON zuwa XML, liƙa wannan JSON baya, saita shinge zuwa sarari 2, kuma danna Canza baya. Za ka sami <user id="1">\n <name>Alice</name>\n</user>, iri ɗaya a tsari da na asali. Abin da ba a tabbatar ba a duk tafiyar zuwa gida tsarin sifa ne, saboda makullan abin JSON ba su da tsari ta fasaha.
Wannan mai canza XML ↔ JSON yana aika fast-xml-parser@4 da aka haɗa a asalin guda ɗaya, yana sarrafa sifofin, CDATA, tags ɗan yaro masu maimaitawa, da prefixes na sunayen sarari, kuma yana ci gaba da aiki ba tare da intanet ba da zarar an loda shafin. Babu mataki na loda, babu proxy na CDN, babu abin wayar analytics, babu telemetry ta kowace iri. Kowane byte na shigarwa da fitarwa yana zama a cikin burauzarka, wanda shine abin da kake so idan nauyin aiki ya kasance ɗumbin mai haƙuri na FHIR, jakar tabbatarwa ta SOAP, ko duk wata siffa ta bayanai wanda ba ya kamata ko waye a wajen ƙungiyar ka ya taɓa ganin shi.