Apakah penukaran XML ↔ JSON?
XML (Extensible Markup Language) ialah format teks berasaskan tag untuk data hierarki. Anda akan melihatnya dalam perkhidmatan web SOAP, suapan RSS dan Atom, rekod kesihatan HL7 FHIR, fail sitemap.xml, dan fail konfigurasi yang dihantar dengan Maven, Spring, dan Android Gradle. JSON (JavaScript Object Notation, ditakrifkan oleh RFC 8259) menerangkan jenis data bersarang yang sama, tetapi dengan pendakap dan tatasusunan dan bukannya tag pembuka dan penutup. JSON ialah yang hampir setiap API REST bercakap hari ini, dan ia adalah bentuk nilai asli setiap masa jalan pelayar. Menukar antara dua format ini ialah salah satu kerja yang bunyi mudah sehingga anda mengenai atribut, kandungan campuran, anak berulang, dan CDATA. Regex tersuai adalah jawapan yang salah; penghurai sebenar adalah yang betul. Alat ini menghantar penghurai sebenar (fast-xml-parser) dan menjalankannya di pelayar anda, supaya anda boleh menampalkan sampul XML yang dikembalikan oleh perkhidmatan SOAP lama dan melihatnya menjadi objek JSON yang boleh anda masukkan terus ke dalam stor Redux, atau mengambil muatan JSON yang telah anda susun dalam klien REST dan menukarnya kembali kepada bentuk XML yang masih dijangkakan oleh titik akhir enterprise.
Bagaimana pemetaan XML ↔ JSON berfungsi?
Setiap penukaran dijalankan secara tempatan di pelayar anda menggunakan perpustakaan fast-xml-parser yang digabungkan (MIT, versi 4.x). Peraturan pemetaan peringkat tinggi adalah:
- Elemen kepada kunci: setiap nama elemen XML menjadi kunci objek JSON.
<user><name>Alice</name></user>dipetakan kepada{"user":{"name":"Alice"}}. - Atribut kepada kunci berprefiks: atribut disimpan di bawah kunci yang dibentuk dengan menambahkan awalan yang dipilih. Dengan awalan
@,<user id="1">menghasilkan{"user":{"@id":"1"}}. - Kandungan teks kepada kunci nod teks: apabila elemen mempunyai kedua-dua atribut dan teks, teks mendarat di bawah kunci nod teks yang dipilih.
<price currency="USD">9.99</price>dengan kunci#textmenghasilkan{"price":{"@currency":"USD","#text":"9.99"}}. - Anak berulang kepada tatasusunan: apabila Paksa tatasusunan untuk tag anak berulang dihidupkan, berbilang elemen adik-beradik dengan nama yang sama diruntuhkan ke dalam tatasusunan JSON.
<items><item>A</item><item>B</item></items>menjadi{"items":{"item":["A","B"]}}. - Bahagian CDATA: teks mentah di dalam
<![CDATA[…]]>dipelihara di bawah kunci#cdatasupaya tanda sudut dan ampersand tidak dilepaskan semula semasa perjalanan pulang pergi. - JSON kepada XML membalikkan pemetaan: kunci objek menjadi elemen, kunci berprefiks menjadi atribut, dan tatasusunan dikembangkan menjadi elemen adik-beradik berulang.
Mengapa tukar XML dan JSON dengan alat ini?
- Data anda kekal pada mesin anda. Setiap penghuraian dan setiap binaan berjalan dalam konteks JavaScript halaman ini. Bundel pesakit FHIR, sampul pengesahan SOAP, fail konfigurasi proprietari, eksport pengebilan — tiada satupun menyentuh pelayan kami, kerana tiada langkah muat naik dalam laluan kod. Buka panel rangkaian dan perhatikan.
- SOAP lama ke dalam front-end REST-first adalah permintaan paling biasa. Bank atau insurans mendedahkan titik akhir SOAP yang tidak akan bersara selama bertahun-tahun; aplikasi React atau Vue yang memanggilnya tidak mahu belajar XML. Tampalkan sampul, dapatkan JSON kembali dengan atribut berprefiks dan ruang nama dipelihara, masukkan kandungan
Bodyke dalam stor keadaan anda. - Pengguna RSS, Atom, dan sitemap turut mendapat manfaat. Direktori podcast, agregator berita, atau papan pemuka dalaman yang mengambil
sitemap.xmlboleh melangkau penulisan penghurai XML sepenuhnya. Tukar suapan sekali, kerja dengan tatasusunan JSON, dan kod klien anda kekal dalam bahasa yang sudah diketahuinya. - Eksport konfigurasi melengkapkan senarai. Maven, Spring, Android Gradle, dan binaan Ant lama semuanya mengeluarkan XML; perkakas cloud-native di hujung lain (Terraform, Ansible, GitHub Actions, cloud-init) membaca JSON atau YAML. Tukar di pelayar dan bukannya menjalankan skrip Python dengan kebergantungan pihak ketiga, terutamanya berguna dalam persekitaran air-gapped di mana menampalkan ke perkhidmatan web yang tidak diketahui bukan pilihan.
Apakah aplikasi biasa penukaran XML ↔ JSON?
Merapatkan XML dan JSON muncul dalam kejuruteraan integrasi, perkakas API, dan kejuruteraan data. Beberapa corak mendominasi beban kerja:
- Jambatan SOAP ke REST: menarik muatan
Bodydari sampul SOAP yang dikembalikan oleh API perbankan atau insurans lama dan menukarnya kepada JSON supaya front-end React atau Vue boleh menggunakannya tanpa lapisan proksi sisi pelayan di hadapannya. - Rekod kesihatan FHIR: menukar bundel XML FHIR HL7 (format yang dikehendaki oleh HHS/ONC dan NHS Digital untuk pertukaran data klinikal) kepada JSON untuk dimuatkan ke dalam koleksi MongoDB Atlas atau lajur JSONB PostgreSQL di mana penganalisis boleh menanyakannya.
- Pemprosesan sitemap dan suapan: menukar
sitemap.xmlatau suapan RSS/Atom kepada tatasusunan JSON supaya pengindeks tersuai, bot Slack, atau widget papan pemuka boleh mengulangi entri tanpa membawa penghurai XML sebagai kebergantungan.
Bagaimana perjalanan pulang pergi XML ↔ JSON kelihatan?
Ambil contoh kecil. Tampalkan <user id="1"><name>Alice</name></user> ke dalam input, tetapkan awalan atribut kepada @, biarkan mod pada XML kepada JSON, dan tekan Tukar. Outputnya ialah {"user":{"@id":"1","name":"Alice"}}. Balikkan mod kepada JSON kepada XML, tampalkan JSON itu kembali, tetapkan inden kepada 2 ruang, dan tekan Tukar sekali lagi. Anda akan mendapat <user id="1">\n <name>Alice</name>\n</user>, yang serupa secara struktur dengan yang asal. Satu-satunya perkara yang tidak dijamin merentas perjalanan pulang pergi ialah tertib atribut, kerana kunci objek JSON tidak teratur mengikut spesifikasi.
Penukar XML ↔ JSON ini menghantar fast-xml-parser@4 yang digabungkan pada asal yang sama, mengendalikan atribut, CDATA, tag anak berulang, dan awalan ruang nama, dan terus berfungsi luar talian setelah halaman dimuatkan. Tiada langkah muat naik, tiada proksi CDN, tiada suar analitik, tiada telemetri dalam apa jua bentuk. Setiap bait input dan output kekal di pelayar anda, yang betul-betul seperti yang anda mahu apabila muatan kebetulannya ialah bundel pesakit FHIR, sampul pengesahan SOAP, atau mana-mana bentuk data lain yang tiada seorang di luar pasukan anda yang perlu melihatnya.