XML ↔ JSON રૂપાંતર શું છે?
XML (Extensible Markup Language) એ વંશવૃક્ષ માળખાના ડેટા માટે એક ટૅગ-આધારિત લખાણ ફોર્મેટ છે. તમે તેને SOAP web services, RSS અને Atom feeds, HL7 FHIR આરોગ્ય રેકોર્ડ્સ, sitemap.xml ફાઇલો, અને Maven, Spring, તથા Android Gradle સાથે આવતી રૂપરેખાંકન ફાઇલોમાં જોશો. JSON (JavaScript Object Notation, RFC 8259 દ્વારા વ્યાખ્યાયિત) એ જ પ્રકારના નેસ્ટેડ ડેટાનું વર્ણન કરે છે, પણ ખુલતા અને બંધ થતા ટૅગને બદલે કૌંસ અને ઍરે સાથે. JSON એ જ છે જે આજે લગભગ દરેક REST API બોલે છે, અને એ દરેક બ્રાઉઝર રનટાઇમનો નેટિવ મૂલ્ય આકાર છે. આ બે ફોર્મેટ વચ્ચે રૂપાંતર કરવું એ એવાં કામોમાંનું એક છે જે ત્યાં સુધી નજીવું લાગે છે જ્યાં સુધી તમે attributes, મિશ્ર સામગ્રી, પુનરાવર્તિત children, અને CDATA સુધી ન પહોંચો. કસ્ટમ regex એ ખોટો જવાબ છે; એક વાસ્તવિક પાર્સર એ સાચો છે. આ સાધન એક વાસ્તવિક પાર્સર (fast-xml-parser) આપે છે અને તેને તમારા બ્રાઉઝરમાં ચલાવે છે, જેથી તમે legacy SOAP service દ્વારા પાછું મળેલું XML envelope પેસ્ટ કરી શકો અને જોઈ શકો કે તે એક JSON ઑબ્જેક્ટ બની જાય છે જેને તમે સીધું Redux store માં મૂકી શકો, અથવા REST client માં તમે ભેગું કરેલું JSON payload લઈને તેને પાછું એ XML આકારમાં ફેરવી શકો જે કોઈ એન્ટરપ્રાઇઝ endpoint હજુ પણ અપેક્ષે છે.
XML ↔ JSON mapping?
દરેક રૂપાંતર bundle કરેલી fast-xml-parser લાઇબ્રેરી (MIT, version 4.x) નો ઉપયોગ કરીને તમારા બ્રાઉઝરમાં સ્થાનિક રીતે ચાલે છે. ઉચ્ચ-સ્તરના mapping નિયમો આ છે:
- Element થી કી: દરેક XML element નામ એક JSON ઑબ્જેક્ટ કી બની જાય છે.
<user><name>Alice</name></user>{"user":{"name":"Alice"}}માં map થાય છે. - Attribute થી પ્રીફિક્સવાળી કી: એક attribute પસંદ કરેલા પ્રીફિક્સને આગળ જોડીને બનેલી કી હેઠળ સંગ્રહિત થાય છે. પ્રીફિક્સ
@સાથે,<user id="1">{"user":{"@id":"1"}}ઉત્પન્ન કરે છે. - Text content ને text-node key: જ્યારે element પાસે attributes અને text બંને હોય, text chosen text-node key ની નીચે આવે.
<price currency="USD">9.99</price>key#textસાથે{"price":{"@currency":"USD","#text":"9.99"}}produce કરે. - પુનરાવર્તિત children થી ઍરે: જ્યારે Force array for repeated child tags ચાલુ હોય, ત્યારે એ જ નામવાળાં અનેક sibling elements એક JSON ઍરેમાં ભેગાં થઈ જાય છે.
<items><item>A</item><item>B</item></items>{"items":{"item":["A","B"]}}બની જાય છે. - CDATA વિભાગો:
<![CDATA[…]]>ની અંદરનું કાચું લખાણ#cdataકી હેઠળ સાચવી રખાય છે જેથી round-trip દરમિયાન કોણીય કૌંસ અને ampersands ફરીથી escape ન થાય. - JSON થી XML mapping ને ઊલટાવે છે: ઑબ્જેક્ટ કી elements બની જાય છે, પ્રીફિક્સવાળી કી attributes બને છે, અને ઍરે પુનરાવર્તિત sibling elements માં વિસ્તરે છે.
XML JSON tool?
- તમારો ડેટા તમારી મશીન પર જ રહે છે. દરેક parse અને દરેક build આ પેજના JavaScript સંદર્ભમાં ચાલે છે. FHIR patient bundles, SOAP authentication envelopes, માલિકીની config ફાઇલો, billing exports — એમાંથી કંઈ પણ અમારા સર્વરને સ્પર્શતું નથી, કારણ કે કોડ માર્ગમાં કોઈ upload પગલું જ નથી. નેટવર્ક પૅનલ ખોલો અને જુઓ.
- Legacy SOAP ને REST-પ્રથમ ફ્રન્ટ એન્ડમાં લાવવું એ સૌથી સામાન્ય માગ છે જે અમે સાંભળીએ છીએ. કોઈ બેંક અથવા વીમા કંપની એક SOAP endpoint ખુલ્લું મૂકે છે જે વર્ષો સુધી નિવૃત્ત નહીં થાય; તેને કૉલ કરતી React અથવા Vue ઍપ XML શીખવા માગતી નથી. Envelope પેસ્ટ કરો, attributes પ્રીફિક્સ થયેલા અને namespaces સચવાયેલા સાથે JSON પાછું મેળવો,
Bodyની સામગ્રીને તમારા state store માં મૂકો. - RSS, Atom, અને sitemap વાપરનારાઓને પણ ફાયદો થાય છે. કોઈ podcast directory, એક news aggregator, અથવા
sitemap.xmlગ્રહણ કરતું આંતરિક dashboard XML પાર્સર લખવાનું સંપૂર્ણપણે ટાળી શકે છે. Feed ને એકવાર convert કરો, JSON ઍરે સાથે કામ કરો, અને તમારો client કોડ એ જ ભાષામાં રહે જે તે પહેલેથી બોલે છે. - રૂપરેખાંકન export યાદીને પૂર્ણ કરે છે. Maven, Spring, Android Gradle, અને જૂના ઢબના Ant builds બધાં XML emit કરે છે; બીજા છેડે આવેલું cloud-native tooling (Terraform, Ansible, GitHub Actions, cloud-init) JSON અથવા YAML વાંચે છે. ત્રીજા-પક્ષની dependency વાળી Python script ચલાવવાને બદલે બ્રાઉઝરમાં convert કરો, ખાસ કરીને air-gapped વાતાવરણમાં ઉપયોગી જ્યાં અજાણી web service માં પેસ્ટ કરવું એ શરૂઆત જ ન કરી શકાય તેવી વાત છે.
XML ↔ JSON રૂપાંતરના સામાન્ય ઉપયોગો કયા છે?
XML અને JSON વચ્ચે સેતુ બાંધવાનું integration engineering, API tooling, અને data engineering આખામાં આવે છે. થોડીક ભાત આ કાર્યભારમાં છવાયેલી રહે છે:
- SOAP થી REST સેતુ: legacy banking અથવા insurance API દ્વારા પાછા આવેલા SOAP envelope માંથી
Bodypayload કાઢવું અને તેને JSON માં convert કરવું જેથી React અથવા Vue ફ્રન્ટ-એન્ડ તેને આગળ સર્વર-બાજુના proxy સ્તર વગર વાપરી શકે. - FHIR આરોગ્ય રેકોર્ડ્સ: HL7 FHIR XML bundles (HHS/ONC અને NHS Digital દ્વારા તબીબી ડેટા આદાનપ્રદાન માટે જરૂરી ફોર્મેટ) ને JSON માં convert કરવું જેથી તેને MongoDB Atlas collection અથવા PostgreSQL JSONB કૉલમમાં load કરી શકાય જ્યાં વિશ્લેષકો તેમને query કરી શકે.
- Sitemap અને feed પ્રક્રિયા:
sitemap.xmlઅથવા RSS/Atom feed ને JSON ઍરેમાં ફેરવવું જેથી કોઈ કસ્ટમ indexer, Slack bot, અથવા dashboard widget એક XML પાર્સરને dependency તરીકે લાવ્યા વગર entries પર iterate કરી શકે.
XML ↔ JSON રાઉન્ડ-ટ્રિપ કેવો દેખાય છે?
એક નાનું ઉદાહરણ લો. <user id="1"><name>Alice</name></user> ને ઇનપુટમાં પેસ્ટ કરો, attribute પ્રીફિક્સ @ સેટ કરો, મોડ XML to JSON પર રાખો, અને Convert દબાવો. આઉટપુટ છે {"user":{"@id":"1","name":"Alice"}}. મોડને JSON to XML પર ફેરવો, એ JSON પાછું પેસ્ટ કરો, indent 2 spaces સેટ કરો, અને ફરી Convert દબાવો. તમને મળશે <user id="1">\n <name>Alice</name>\n</user>, મૂળ સાથે માળખાકીય રીતે સમાન. round-trip માં માત્ર attribute ક્રમની જ ખાતરી નથી, કારણ કે JSON ઑબ્જેક્ટ કી સ્પષ્ટીકરણ મુજબ ક્રમ વગરની હોય છે.
આ XML ↔ JSON કન્વર્ટર fast-xml-parser@4 ને એ જ origin પર bundle કરીને આપે છે, attributes, CDATA, પુનરાવર્તિત child ટૅગ, અને namespace પ્રીફિક્સ સંભાળે છે, અને એકવાર પેજ load થઈ ગયા પછી offline કામ કરતું રહે છે. કોઈ upload પગલું નહીં, કોઈ CDN proxy નહીં, કોઈ analytics beacon નહીં, કોઈપણ પ્રકારની telemetry નહીં. ઇનપુટ અને આઉટપુટનો દરેક બાઇટ તમારા બ્રાઉઝરમાં જ રહે છે, જે બરાબર એ જ છે જે તમે ઇચ્છો છો જ્યારે payload એ FHIR patient bundle, SOAP authentication envelope, અથવા એવા કોઈ અન્ય આકારનો ડેટા હોય જેને તમારી ટીમની બહારના કોઈએ ક્યારેય જોવો ન જોઈએ.