§

Masukan

Mode
§

Keluaran

Tim di Indonesia menjembatani XML dan JSON setiap hari, biasanya karena dua bagian stack tidak sepakat tentang format mana yang mereka gunakan. Layanan SOAP di perbankan dan asuransi masih mengembalikan amplop XML yang ingin digunakan oleh front-end React sebagai JSON. Di sisi data, body AWS SNS dan SQS, manifest pengiriman, dan pengajuan dokumen tiba sebagai XML yang diubah bentuknya menjadi JSON oleh insinyur sebelum disimpan ke Snowflake atau BigQuery. Solusinya sama di setiap kasus: konverter cepat dan lokal yang bisa Anda jalankan ulang pada payload baru tanpa mengirimkannya ke mana pun.

Apa itu konversi XML ↔ JSON?

XML (Extensible Markup Language) adalah format teks berbasis tag untuk data hierarkis. Anda akan menemukannya di layanan web SOAP, umpan RSS dan Atom, rekaman kesehatan HL7 FHIR, file sitemap.xml, dan file konfigurasi yang disertakan dengan Maven, Spring, dan Android Gradle. JSON (JavaScript Object Notation, didefinisikan oleh RFC 8259) mendeskripsikan jenis data bersarang yang sama, tetapi dengan tanda kurung kurawal dan array alih-alih tag pembuka dan penutup. JSON adalah format yang digunakan hampir setiap REST API saat ini, dan ini adalah bentuk nilai asli dari setiap runtime peramban. Mengkonversi antara dua format adalah salah satu pekerjaan yang terdengar sepele sampai Anda menghadapi atribut, konten campuran, anak yang berulang, dan CDATA. Regex khusus adalah jawaban yang salah; parser nyata adalah jawaban yang benar. Alat ini menyertakan parser nyata (fast-xml-parser) dan menjalankannya di peramban Anda, sehingga Anda dapat menempel amplop XML yang dikembalikan oleh layanan SOAP lama dan melihatnya menjadi objek JSON yang bisa langsung Anda masukkan ke store Redux, atau mengambil payload JSON yang telah Anda susun di klien REST dan mengubahnya kembali ke bentuk XML yang masih diharapkan oleh endpoint enterprise.

Bagaimana pemetaan XML ↔ JSON bekerja?

Setiap konversi berjalan secara lokal di peramban Anda menggunakan pustaka fast-xml-parser yang dibundel (MIT, versi 4.x). Aturan pemetaan tingkat tinggi adalah:

  1. Elemen ke kunci: setiap nama elemen XML menjadi kunci objek JSON. <user><name>Alice</name></user> dipetakan ke {"user":{"name":"Alice"}}.
  2. Atribut ke kunci berawalan: atribut disimpan di bawah kunci yang dibentuk dengan menambahkan awalan yang dipilih. Dengan awalan @, <user id="1"> menghasilkan {"user":{"@id":"1"}}.
  3. Konten teks ke kunci text-node: ketika elemen memiliki atribut dan teks, teks ditempatkan di bawah kunci text-node yang dipilih. <price currency="USD">9.99</price> dengan kunci #text menghasilkan {"price":{"@currency":"USD","#text":"9.99"}}.
  4. Anak yang berulang ke array: ketika Paksa array untuk tag anak yang berulang aktif, beberapa elemen sibling dengan nama yang sama digabungkan menjadi array JSON. <items><item>A</item><item>B</item></items> menjadi {"items":{"item":["A","B"]}}.
  5. Bagian CDATA: teks mentah di dalam <![CDATA[…]]> dipertahankan di bawah kunci #cdata sehingga tanda kurung sudut dan ampersand tidak di-escape ulang selama perjalanan pulang-pergi.
  6. JSON ke XML membalikkan pemetaan: kunci objek menjadi elemen, kunci berawalan menjadi atribut, dan array diperluas menjadi elemen sibling yang berulang.

Mengapa mengonversi XML dan JSON dengan alat ini?

  • Data Anda tetap di mesin Anda. Setiap parse dan setiap build berjalan dalam konteks JavaScript halaman ini. Bundel pasien FHIR, amplop otentikasi SOAP, file konfigurasi proprietary, ekspor penagihan — tidak ada yang menyentuh server kami, karena tidak ada langkah unggahan dalam jalur kode. Buka panel jaringan dan lihat.
  • SOAP lama ke front-end yang mengutamakan REST adalah permintaan paling umum. Bank atau perusahaan asuransi mengekspos endpoint SOAP yang tidak akan dinonaktifkan dalam beberapa tahun; aplikasi React atau Vue yang memanggilnya tidak ingin belajar XML. Tempel amplop, dapatkan JSON kembali dengan atribut yang diberi awalan dan namespace yang dipertahankan, masukkan konten Body ke dalam store state Anda.
  • Konsumen RSS, Atom, dan sitemap juga mendapat manfaat. Direktori podcast, agregator berita, atau dasbor internal yang menyerap sitemap.xml dapat melewatkan penulisan parser XML sepenuhnya. Konversi umpan sekali saja, kerjakan dengan array JSON, dan kode klien Anda tetap dalam bahasa yang sudah dikuasainya.
  • Ekspor konfigurasi melengkapi daftar. Maven, Spring, Android Gradle, dan build Ant bergaya lama semuanya menghasilkan XML; tooling cloud-native di sisi lain (Terraform, Ansible, GitHub Actions, cloud-init) membaca JSON atau YAML. Konversi di peramban alih-alih menjalankan skrip Python dengan ketergantungan pihak ketiga, terutama berguna di lingkungan yang terisolasi di mana menempel ke layanan web yang tidak dikenal bukan pilihan.

Apa saja aplikasi umum konversi XML ↔ JSON?

Menjembatani XML dan JSON muncul di seluruh rekayasa integrasi, tooling API, dan rekayasa data. Beberapa pola mendominasi beban kerja:

  • Jembatan SOAP ke REST: mengambil payload Body dari amplop SOAP yang dikembalikan oleh API perbankan atau asuransi lama dan mengkonversinya ke JSON sehingga front-end React atau Vue dapat mengkonsumsinya tanpa lapisan proxy sisi server di depannya.
  • Rekaman kesehatan FHIR: mengkonversi bundel XML HL7 FHIR (format yang diperlukan untuk pertukaran data klinis) ke JSON untuk dimuat ke koleksi MongoDB Atlas atau kolom PostgreSQL JSONB di mana analis dapat mengkuerinya.
  • Pemrosesan sitemap dan umpan: mengubah sitemap.xml atau umpan RSS/Atom menjadi array JSON sehingga pengindeks khusus, bot Slack, atau widget dasbor dapat mengiterasi entri tanpa menarik parser XML sebagai ketergantungan.

Seperti apa perjalanan pulang-pergi XML ↔ JSON?

Ambil contoh kecil. Tempel <user id="1"><name>Alice</name></user> ke masukan, atur awalan atribut ke @, biarkan mode di XML ke JSON, dan tekan Konversi. Keluarannya adalah {"user":{"@id":"1","name":"Alice"}}. Alihkan mode ke JSON ke XML, tempel JSON tersebut kembali, atur indentasi ke 2 spasi, dan tekan Konversi lagi. Anda akan mendapatkan <user id="1">\n <name>Alice</name>\n</user>, secara struktural identik dengan aslinya. Satu-satunya hal yang tidak dijamin selama perjalanan pulang-pergi adalah urutan atribut, karena kunci objek JSON tidak terurut berdasarkan spesifikasi.

Konverter XML ↔ JSON ini menyertakan fast-xml-parser@4 yang dibundel di origin yang sama, menangani atribut, CDATA, tag anak yang berulang, dan awalan namespace, serta terus bekerja secara offline setelah halaman dimuat. Tanpa langkah unggahan, tanpa proxy CDN, tanpa beacon analitik, tanpa telemetri jenis apa pun. Setiap byte masukan dan keluaran tetap di peramban Anda, yang persis seperti yang Anda inginkan ketika payload tersebut adalah bundel pasien FHIR, amplop otentikasi SOAP, atau bentuk data apa pun yang tidak boleh dilihat oleh siapa pun di luar tim Anda.