Konverter JSON ke XML
Tempel JSON, dapatkan XML seketika. Mengonversi objek, array, dan atribut @_ langsung di browser — tidak ada upload. Gratis, privat, tanpa pendaftaran.
Opsi · 2 spasi · JSON → XML
Apa Itu Konversi JSON-ke-XML dan Bagaimana Cara Kerjanya?
JSON (JavaScript Object Notation) dan XML (Extensible Markup Language) keduanya merupakan format data terstruktur, tetapi memiliki model yang sangat berbeda: JSON adalah pohon objek, array, string, angka, boolean, dan nilai null tanpa konsep atribut atau batasan root dokumen; XML adalah pohon elemen yang dapat membawa atribut dan konten teks, dan dokumen harus memiliki tepat satu elemen root. Mengonversi dari JSON ke XML memerlukan serangkaian konvensi untuk menjembatani ketidaksesuaian ini.
Alat ini menggunakan konvensi yang paling banyak diadopsi — konvensi yang sama yang digunakan oleh fast-xml-parser (Node.js), xmltodict (Python), dan JAXB (Java) — diterapkan secara terbalik:
**1. Normalisasi elemen root.** Perbedaan terpenting antara JSON dan XML adalah batasan root. JSON tidak memiliki konsep root; XML memerlukan tepat satu. Konverter menangani empat kasus secara otomatis. Objek dengan satu kunci menggunakan kunci tersebut sebagai root XML: { "config": {...} } →
**2. Prefiks @_ → atribut XML.** Kunci JSON berprefix @_ menjadi atribut XML pada elemen yang melingkupi. { "element": { "@_id": "42", "@_class": "primary" } } menghasilkan
**3. #text → konten teks elemen.** Ketika sebuah elemen memerlukan atribut dan konten teks, teks disimpan di bawah kunci #text: { "price": { "@_currency": "USD", "#text": "29.99" } } →
**4. Array → elemen saudara berulang dengan nama yang sama.** XML mengizinkan beberapa elemen anak dengan nama yang sama; JSON menggunakan array untuk daftar yang terurut. Array JSON di bawah kunci menghasilkan elemen anak berulang yang menggunakan kembali nama kunci: { "items": ["a", "b"] } menghasilkan
**5. Simetris dengan XML-ke-JSON.** Konvensi @_ dan #text yang digunakan di sini adalah konvensi yang sama persis yang digunakan oleh alat pendamping Konverter XML ke JSON. Ini berarti round-trip JSON → XML → JSON mempertahankan atribut, konten teks, dan struktur elemen — selama JSON input mengikuti konvensi @_/#text.
**Kapan mengonversi JSON ke XML?** Skenario paling umum adalah: (1) mengirim data ke layanan web SOAP atau berbasis XML lama yang memerlukan body permintaan XML; (2) menghasilkan file konfigurasi XML (Spring, Maven, Ant, resource Android) dari data JSON; (3) menghasilkan sitemap.xml atau feed RSS XML dari data konten JSON; (4) berinteroperasi dengan sistem enterprise (ERP, CRM, EDI) yang mengonsumsi XML; (5) menghasilkan SVG atau format grafis berbasis XML lainnya secara programatik dari data JSON. Untuk memformat dan memvalidasi XML yang dihasilkan, gunakan XML Formatter.
// Convert JSON to XML in Node.js using fast-xml-parser
import { XMLBuilder } from 'fast-xml-parser';
const data = {
catalog: {
product: {
'@_id': 'P01',
'@_category': 'electronics',
name: 'Wireless Headphones',
price: {
'@_currency': 'USD',
'#text': '79.99'
}
}
}
};
const builder = new XMLBuilder({
attributeNamePrefix: '@_', // @_ keys become XML attributes
textNodeName: '#text', // #text key becomes element text content
ignoreAttributes: false, // process @_ attribute keys
format: true, // pretty-print with indentation
indentBy: ' ', // 2-space indent
});
const xml = builder.build(data);
console.log(xml);
// <catalog>
// <product id="P01" category="electronics">
// <name>Wireless Headphones</name>
// <price currency="USD">79.99</price>
// </product>
// </catalog> Fitur Utama
Konversi Langsung
Output XML diperbarui seketika saat Anda mengetik atau menempel JSON — tidak perlu tombol Convert. Input besar (>200KB) secara otomatis beralih ke mode manual agar browser tetap responsif.
Normalisasi Root Otomatis
XML memerlukan tepat satu elemen root. Objek dengan satu kunci menggunakan kunci sebagai root; objek dengan beberapa kunci dibungkus dalam
Konvensi Atribut @_ dan #text
Kunci berprefix @_ menjadi atribut XML; kunci #text menjadi konten teks elemen. Ini cocok dengan konvensi fast-xml-parser dan xmltodict, membuat output simetris dengan alat pendamping Konverter XML ke JSON.
Array ke Elemen Berulang
Array JSON di bawah kunci menghasilkan elemen anak berulang yang menggunakan kembali nama kunci — tanpa singularisasi. { "items": [1, 2, 3] } menghasilkan tiga saudara
Privasi 100% Berbasis Browser
Semua konversi berjalan secara lokal di browser Anda menggunakan JavaScript. JSON Anda — termasuk kredensial, konfigurasi internal, dan payload sensitif — tidak pernah dikirim ke server mana pun, tidak pernah dicatat, dan tidak pernah disimpan.
Round-Trip Simetris dengan XML ke JSON
Konvensi @_ dan #text dibagi dengan alat pendamping Konverter XML ke JSON. Round-trip JSON → XML → JSON secara setia mempertahankan atribut, konten teks, dan struktur bersarang.
Contoh
Objek Respons API
{"user":{"id":42,"name":"Alice Kim","email":"alice@example.com","role":"admin","address":{"city":"Seoul","country":"KR"}}} Objek JSON dengan satu kunci di mana kunci tingkat atas menjadi elemen root XML. Objek address bersarang menghasilkan elemen anak
dengan anak-anakArray Tingkat Atas
[{"id":1,"name":"Widget A","price":9.99},{"id":2,"name":"Widget B","price":14.99},{"id":3,"name":"Widget C","price":4.49}] Ketika seluruh input adalah array JSON (tidak dibungkus dalam objek), konverter menghasilkan
Objek dengan Atribut dan Konten Teks
{"catalog":{"product":{"@_id":"P01","@_category":"electronics","name":"Wireless Headphones","price":{"@_currency":"USD","#text":"79.99"}}}} Kunci berprefix @_ menjadi atribut XML pada elemen: @_id menjadi id="P01" dan @_category menjadi category="electronics" pada elemen
Cara Menggunakan
- 1
Tempel JSON Anda
Masukkan atau tempel data JSON ke kolom input di atas. Anda juga dapat klik 'Muat contoh' untuk mencoba sampel — objek respons API, payload array, atau objek menggunakan atribut @_ dan #text.
- 2
Lihat Output XML Langsung
XML muncul seketika di panel output. Objek dengan satu kunci menggunakan kunci sebagai root; objek dengan beberapa kunci dibungkus dalam
; kunci berprefix @_ menjadi atribut; array menjadi elemen anak berulang. Sesuaikan indent (2 atau 4 spasi) sesuai kebutuhan. - 3
Salin atau Unduh
Klik Copy untuk mengambil XML ke clipboard, atau Download untuk menyimpannya sebagai file .xml. Untuk memvalidasi atau memformat ulang hasilnya, tempel ke XML Formatter.
Jebakan Konversi Umum
Objek dengan Beberapa Kunci Mendapat Pembungkus yang Tidak Terduga
Jika JSON tingkat atas Anda memiliki beberapa kunci, output membungkus semuanya dalam
// Input: { "status": 200, "data": { "id": 1 } }
// Output: <root><status>200</status><data><id>1</id></data></root>
// Root is <root> — may not match your schema // Wrap in a named key to control the root element
// Input: { "response": { "status": 200, "data": { "id": 1 } } }
// Output: <response><status>200</status><data><id>1</id></data></response> Array Tingkat Atas Mendapat Pembungkus
Array JSON tingkat atas tidak memiliki nama elemen, sehingga dibungkus sebagai
// Input: [{ "id": 1 }, { "id": 2 }]
// Output: <root><item><id>1</id></item><item><id>2</id></item></root>
// Tag names are generic // Wrap in a named key for meaningful tag names
// Input: { "products": [{ "id": 1 }, { "id": 2 }] }
// Output: <root><products><id>1</id></products><products><id>2</id></products></root>
// Each array element reuses the key name "products" as its tag Kunci Atribut Tidak Memiliki Prefiks @_
Untuk menghasilkan atribut XML, kunci JSON harus berprefix @_. Tanpa prefiks, kunci diperlakukan sebagai elemen anak, bukan atribut.
// Input: { "tag": { "id": "42", "name": "Alice" } }
// Output: <tag><id>42</id><name>Alice</name></tag> ← id is a child element // Use @_ prefix for attributes
// Input: { "tag": { "@_id": "42", "name": "Alice" } }
// Output: <tag id="42"><name>Alice</name></tag> ← id is an attribute Elemen dengan Atribut dan Teks — #text Tidak Ada
Jika Anda menginginkan elemen memiliki atribut XML dan konten teks, Anda harus menggunakan kunci #text untuk teks. Tanpanya, teks tidak memiliki tempat dan elemen akan kosong atau menghasilkan error.
// Input: { "price": { "@_currency": "USD", "value": "29.99" } }
// Output: <price currency="USD"><value>29.99</value></price>
// Text is a child element, not text content // Use #text for element text content
// Input: { "price": { "@_currency": "USD", "#text": "29.99" } }
// Output: <price currency="USD">29.99</price> ← text content Kunci JSON dengan Karakter yang Tidak Valid untuk XML
Nama elemen XML tidak boleh dimulai dengan angka atau mengandung spasi, titik dua (kecuali untuk prefiks namespace), atau sebagian besar karakter khusus. Jika kunci JSON Anda mengandung karakter-karakter ini, output XML akan tidak valid. Ganti nama kunci yang bermasalah sebelum mengonversi, atau sanitasi dalam langkah pasca-pemrosesan.
// JSON key starts with digit — invalid XML element name
// Input: { "1stItem": "value" }
// Output: <1stItem>value</1stItem> ← invalid XML // Use a valid XML element name
// Input: { "firstItem": "value" }
// Output: <firstItem>value</firstItem> ← valid XML Karakter Khusus dalam Nilai yang Tidak Di-escape
Konten teks XML tidak boleh mengandung karakter mentah <, >, &, atau " — harus di-escape sebagai <, >, &, dan ". Konverter secara otomatis men-escape karakter-karakter ini dalam konten teks elemen dan nilai atribut. Jika pemrosesan hilir men-escape ganda, verifikasi bahwa parser XML Anda mengonsumsi byte XML mentah, bukan meng-escape kembali konten yang sudah di-escape.
// JSON: { "query": "name = 'Alice' & role = 'admin'" }
// Converter outputs: <query>name = 'Alice' & role = 'admin'</query>
// If double-processed: &amp; — consumer is re-escaping // Converter output is correct — consume it as XML, not as a raw string // <query>name = 'Alice' & role = 'admin'</query> // XML parser decodes to: name = 'Alice' & role = 'admin'
Kasus Penggunaan Umum
- Memanggil Layanan Web SOAP dan XML Lama
- Bangun payload JSON di aplikasi Anda, konversi ke XML, dan POST ke endpoint SOAP. Ini menghindari pembuatan string XML secara manual dan memungkinkan Anda bekerja dengan data dalam struktur JSON native hingga saat Anda perlu menserialisasinya untuk layanan lama.
- Menghasilkan File Konfigurasi XML
- Spring, Maven, Ant, Tomcat, dan Android semuanya menggunakan format konfigurasi XML. Hasilkan atau transformasikan data konfigurasi sebagai JSON — lebih mudah di-diff dan dikontrol versi — lalu konversi ke XML untuk deployment.
- Menghasilkan Sitemap dan Feed RSS XML
- Sistem manajemen konten dan generator situs statis sering menyimpan metadata halaman sebagai JSON. Konversi metadata tersebut ke sitemap.xml atau feed RSS XML untuk diserahkan ke mesin pencari atau menyindikasikan konten ke pembaca feed.
- Integrasi Data Enterprise (EDI / ERP / CRM)
- Sistem ERP (SAP, Oracle), platform CRM, dan jaringan EDI biasanya bertukar data dalam XML. Konversi ekspor JSON dari REST API modern ke XML untuk memberi makan sistem-sistem ini tanpa membangun serializer XML kustom.
- File Resource Android
- Resource string Android, batasan layout, dan entri manifest semuanya adalah XML. Hasilkan atau perbarui file resource secara programatik dari sumber data JSON dan konversi ke format XML yang diperlukan oleh sistem build Android.
- Pembuatan SVG dan Grafis Vektor
- SVG adalah XML. Bangun struktur SVG sebagai data JSON — path, bentuk, warna, transformasi — lalu konversi ke XML untuk menghasilkan file SVG yang valid untuk web, cetak, atau alat pengeditan vektor.
Detail Teknis
- Parsing JSON Sesuai RFC 8259
- Input JSON di-parse menggunakan JSON.parse() bawaan browser, yang sepenuhnya sesuai RFC 8259. Ini memberikan pesan error sintaks yang akurat dengan informasi posisi best-effort (baris dan kolom) dan menangani semua tipe data JSON: string, angka, boolean, null, array, dan objek.
- Serializer JSON-ke-XML Rekursif Kustom
- Setelah di-parse, serializer rekursif kustom menelusuri pohon JSON. Kunci objek yang dimulai dengan @_ dikeluarkan sebagai atribut XML pada elemen induk. Kunci #text dikeluarkan sebagai konten teks elemen. Kunci objek biasa menjadi elemen anak. Nilai array menghasilkan elemen saudara berulang dengan nama yang sama. Karakter khusus (<, >, &, ", ') dalam konten teks dan nilai atribut di-escape ke referensi entitas XML-nya.
- Normalisasi Root
- Karena XML memerlukan tepat satu elemen root, serializer menerapkan normalisasi root sebelum membangun dokumen: objek dengan satu kunci menggunakan kunci sebagai root; objek dengan beberapa kunci dan array tingkat atas menerima pembungkus
sintetis. Ini memastikan output selalu XML well-formed terlepas dari bentuk input. - 100% Berbasis Browser — Tanpa Upload, Tanpa Server
- Semua pemrosesan berjalan di JavaScript engine browser Anda. Tidak ada data yang ditransmisikan melalui jaringan kapan pun. Input yang lebih besar dari 200KB secara otomatis beralih dari mode langsung ke mode manual (memerlukan klik Convert eksplisit) untuk menjaga browser tetap responsif selama serialisasi berat.
Praktik Terbaik
- Kontrol Elemen Root dengan Objek Satu Kunci
- Cara paling bersih untuk menghasilkan XML yang bermakna adalah memastikan JSON tingkat atas Anda adalah objek dengan satu kunci yang merupakan nama elemen root yang diinginkan. Membungkus data multi-kunci di bawah satu kunci bernama memberikan root yang bermakna secara semantis alih-alih pembungkus generik
. - Gunakan @_ dan #text untuk XML yang Banyak Menggunakan Atribut
- Jika skema XML target Anda menggunakan banyak atribut (umum dalam file konfigurasi, SVG, dan SOAP envelope), bentuk ulang JSON Anda untuk menggunakan kunci berprefix @_ dan #text sebelum mengonversi. XML yang dihasilkan akan cocok dengan skema target persis tanpa pasca-pemrosesan.
- Bungkus Array dalam Objek Bernama untuk Nama Tag yang Bermakna
- Array tingkat atas menghasilkan pola generik
, di mana- ...
- adalah nama literal tetap. Membungkus array di bawah kunci bernama — { "products": [...] } — menghasilkan elemen
berulang (nama kunci digunakan kembali untuk setiap elemen array) di bawah pembungkus . Ini memberikan nama tag yang bermakna secara domain dan hampir selalu lebih disukai untuk XML yang akan di-parse atau divalidasi oleh skema. - Validasi Output dengan XML Formatter
- Setelah mengonversi, tempel output XML ke XML Formatter untuk memvalidasi well-formedness, memeriksa indentasi, dan mengidentifikasi masalah struktural apa pun sebelum mengirim XML ke layanan hilir atau melakukan commit ke version control.
- Sanitasi Kunci JSON Sebelum Mengonversi
- Nama elemen XML harus dimulai dengan huruf atau garis bawah dan tidak boleh mengandung spasi atau sebagian besar karakter khusus. Jika kunci JSON Anda berasal dari sumber eksternal (nama kolom database, nama field API, atau input pengguna), audit untuk validitas nama XML sebelum mengonversi guna menghindari output yang tidak valid.
Pertanyaan yang Sering Diajukan
Apakah data JSON saya dikirim ke server saat menggunakan alat ini?
Bagaimana alat menentukan apa elemen root XML?
Mengapa objek JSON dengan beberapa kunci dibungkus dalam ?
Bagaimana array JSON tingkat atas dikonversi ke XML?
Bagaimana cara mengonversi kunci JSON ke atribut XML?
Untuk apa kunci #text digunakan?
Apakah indentasi mempengaruhi struktur XML?
Bagaimana array JSON yang bersarang di dalam objek dikonversi ke XML?
Bagaimana cara mengonversi XML kembali ke JSON?
Bisakah saya memvalidasi atau memformat output XML?
Apakah ada batas ukuran file untuk input JSON?
Tipe JSON apa yang didukung?
Alat Terkait
Lihat semua alat →Decode & Encode Base64 Online — Konversi Instan di Browser
Encoding & Pemformatan
Decode dan encode Base64 online gratis. Konversi real-time dengan dukungan UTF-8 dan emoji. 100% privat di browser Anda. Tanpa pendaftaran.
Konverter CSV ke JSON
Encoding & Pemformatan
Konversi CSV ke JSON di browser. RFC 4180, infer tipe, baris header, aman big-int. 100% privat, tanpa unggah.
JSON Diff (Bandingkan)
Encoding & Pemformatan
Bandingkan dua file JSON langsung di browser Anda. Sorotan side-by-side, output RFC 6902 JSON Patch, abaikan field seperti timestamp dan ID. 100% privat, tanpa upload.
Format & Validasi JSON Online — Gratis, Cepat, Privat
Encoding & Pemformatan
Format, validasi, dan rapikan JSON langsung di browser Anda. Alat online gratis dengan deteksi error, minifikasi, dan salin sekali klik. 100% privat.
Validator JSON Schema
Encoding & Pemformatan
Validasi JSON terhadap JSON Schema apa pun secara instan di browser Anda. Mendukung Draft 2020-12, 2019-09, dan Draft-07 dengan pesan error berbasis path yang presisi. 100% privat — tanpa upload, tanpa akun, gratis.
Konverter JSON ke CSV
Encoding & Pemformatan
Konversi JSON ke CSV di browser. Preset RFC 4180, Excel-EU, TSV, Pipe. Flatten objek bertingkat atau Stringify. 100% privat, tanpa unggah.