CodeKitHub
Alat JSON

Konverter JSON ↔ XML

Terakhir diperbarui:

Saat mengonversi JSON ke XML, setiap key menjadi tag elemen dan setiap value menjadi konten teksnya — objek bersarang menjadi elemen bersarang, array menjadi elemen sibling yang berulang, dan atribut XML dipetakan ke key `@_nama` di JSON agar konversi bolak-balik tidak kehilangan data. Alat ini melakukan konversi tersebut, dua arah sekaligus, sepenuhnya di dalam browser Anda. Pilih arah konversi, tempel data Anda, dan dapatkan hasil dengan struktur bersarang yang benar untuk disalin atau diunduh.

Apa Itu Alat Ini?

XML dan JSON sama-sama format data berbentuk pohon, tapi digunakan di tempat berbeda: API enterprise lama, layanan SOAP, feed RSS/Atom, dan banyak format konfigurasi masih memakai XML, sementara REST API modern dan kode JavaScript hampir selalu memakai JSON. Alat ini menerjemahkan antara keduanya supaya Anda tidak perlu menulis manual salah satunya saat menghubungkan sistem lama dan baru.

Konversinya dibangun langsung di atas API DOMParser bawaan browser untuk membaca XML, dan mengikuti struktur yang ditetapkan spesifikasi W3C XML 1.0 saat menghasilkannya — sehingga XML yang dihasilkan valid (well-formed) dan XML yang diterima diproses dengan cara yang sama seperti browser atau library XML standar lainnya.

Karena XML punya konsep yang tidak dimiliki JSON (atribut, konten campuran teks/elemen, wajib satu elemen root), dan JSON punya konsep yang tidak dimiliki XML (array native, boolean, angka), alat ini memakai konvensi yang sudah umum digunakan: atribut XML `name="value"` menjadi key JSON `"@_name": "value"`, konten teks elemen menjadi nilai string langsung (kalau tidak ada anak elemen atau atribut) atau key `"#text"` yang berdampingan dengan atribut lainnya, dan elemen sibling berulang dengan tag sama menjadi array JSON.

Mengapa Menggunakannya?

  • Dua arah — konversi JSON ke XML atau XML ke JSON dari layar yang sama.
  • Menangani nesting dengan benar — objek JSON bersarang menjadi elemen XML bersarang dan sebaliknya, di kedalaman berapa pun.
  • Array dipetakan ke elemen berulang — array JSON di bawah satu key menjadi elemen XML sibling sebanyak itu dengan tag yang sama, dan tag XML yang berulang kembali menjadi array JSON.
  • Atribut XML tetap dipertahankan — memakai konvensi `@_namaAtribut`, jadi data atribut tidak hilang begitu saja.
  • Salin ke clipboard atau unduh sebagai file .json atau .xml.
  • 100% berjalan di sisi klien — apa pun yang Anda tempel tidak diunggah ke mana pun.

Cara Menggunakan

  1. Pilih arah: "XML → JSON" atau "JSON → XML".
  2. Tempel data Anda ke kotak input.
  3. Klik "Convert".
  4. Periksa hasilnya, lalu salin atau klik "Download" untuk menyimpan file.

Contoh

Input

{"user":{"name":"Alice","age":30}}

Output

<?xml version="1.0" encoding="UTF-8"?>
<user>
  <name>Alice</name>
  <age>30</age>
</user>

Satu-satunya key JSON tingkat atas ("user") menjadi elemen root XML; jika JSON punya lebih dari satu key tingkat atas, alat ini membungkus semuanya dalam elemen <root> karena XML mengharuskan tepat satu root.

Tips praktis

  • Memigrasikan konfigurasi XML lama (seperti file setting aplikasi lawas) ke sistem berbasis JSON modern: tempel XML-nya, konversi, lalu sesuaikan nama field sesuai kebutuhan.
  • Menguji endpoint SOAP atau XML-RPC dari JavaScript: konversi dulu payload request JSON Anda ke XML di sini sebelum dikirim, atau konversi respons XML kembali ke JSON agar mudah diperiksa.
  • Kalau JSON Anda memakai array untuk data yang di XML direpresentasikan sebagai elemen berulang, pastikan array itu bersarang di bawah satu key terlebih dahulu (misalnya {"items":{"item":[1,2,3]}}), bukan array telanjang di tingkat atas, karena XML tidak bisa punya lebih dari satu elemen root.

Kenapa konvensi atribut @_ itu penting

Bagian tersulit dari konversi JSON/XML adalah elemen XML bisa membawa dua jenis data sekaligus — atribut dan konten anak — sementara objek JSON biasa hanya punya key dan value. Tanpa konvensi untuk memisahkan keduanya, konverter yang naif bisa saja kehilangan atribut sepenuhnya atau mencampurnya dengan elemen anak sehingga tidak bisa dikonversi kembali secara andal. Konvensi prefix `@_name` (yang juga dipakai oleh library populer di ekosistem JavaScript) menyelesaikan ini dengan memberi atribut bentuk key yang jelas dan tidak ambigu, sehingga `<product id="42">Widget</product>` bisa bolak-balik dengan rapi menjadi `{"product":{"@_id":"42","#text":"Widget"}}` tanpa kehilangan id atau salah menebak nilai mana yang mana.

Pertanyaan yang Sering Diajukan

Apa yang terjadi pada JSON dengan lebih dari satu key tingkat atas?

XML mengharuskan satu elemen root, jadi kalau objek JSON Anda punya beberapa key tingkat atas (misalnya {"a":1,"b":2}), hasilnya dibungkus dalam elemen <root>: <root><a>1</a><b>2</b></root>. Kalau JSON Anda hanya punya satu key tingkat atas, key itu langsung menjadi nama elemen root.

Bagaimana atribut XML direpresentasikan di JSON?

Atribut seperti <user id="7"> menjadi key "@_id": "7" di objek JSON hasilnya. Ini konvensi umum yang terdokumentasi (dipakai juga oleh library seperti fast-xml-parser) yang membuat atribut tetap bisa dibedakan dari elemen anak.

Apakah elemen XML yang berulang menjadi array JSON?

Ya. Kalau sebuah elemen punya beberapa anak dengan nama tag yang sama, misalnya <items><item>1</item><item>2</item></items>, konversi ke JSON menghasilkan {"items":{"item":["1","2"]}}. Mengonversi JSON itu kembali ke XML akan menghasilkan lagi elemen <item> yang berulang.

Apakah angka dan boolean tetap dipertahankan saat konversi XML ke JSON?

XML tidak punya konsep angka atau boolean secara native — semuanya berupa teks — jadi konten teksnya akan muncul sebagai string JSON (misalnya "30", bukan 30). Kalau Anda butuh tipe numerik, field tersebut perlu dikonversi lagi setelahnya.

Apakah data saya diunggah ke suatu tempat?

Tidak. Proses parsing dan konversi sepenuhnya berjalan di JavaScript dalam browser Anda, memakai API DOMParser bawaan — tidak ada yang dikirim ke server, sehingga aman dipakai untuk file konfigurasi privat atau payload API internal.

Alat Terkait