JSON ke XML
Konversi JSON ke format XML
Input JSON
Output XML
Apa Itu Konversi JSON ke XML?
JSON (JavaScript Object Notation) dan XML (eXtensible Markup Language) adalah dua format pertukaran data yang paling dominan dalam pengembangan perangkat lunak. JSON menggunakan pasangan kunci-nilai dan larik dalam sintaks yang ringkas, sementara XML membungkus data dalam tag pembuka dan penutup dengan atribut opsional. Mengonversi JSON ke XML berarti menerjemahkan primitif struktural JSON — objek, larik, string, angka, boolean, dan null — menjadi dokumen XML yang terbentuk dengan baik beserta penumpukan elemen yang sesuai.
XML tetap menjadi format yang diwajibkan di banyak sistem perusahaan, API pemerintah, layanan web SOAP, dan standar industri seperti HL7 (layanan kesehatan), FpML (keuangan), dan XBRL (pelaporan keuangan). Ketika aplikasi Anda menghasilkan JSON tetapi konsumen hilir mengharapkan XML, konverter JSON ke XML menangani penerjemahan tanpa restrukturisasi manual. Konversi ini mengikuti aturan pemetaan yang dapat diprediksi: objek JSON menjadi elemen XML, item larik menjadi elemen saudara yang berulang, dan nilai primitif menjadi simpul teks.
Tidak ada RFC atau standar W3C tunggal yang mendefinisikan cara JSON dipetakan ke XML. Library yang berbeda menghasilkan output yang berbeda untuk input yang sama. Konvensi yang paling umum (digunakan oleh alat ini) membungkus seluruh dokumen dalam elemen root yang dapat dikonfigurasi, mengonversi setiap kunci JSON menjadi elemen anak XML, dan merepresentasikan item larik sebagai elemen berulang dengan nama tag yang sama. Memahami aturan pemetaan ini penting ketika sistem penerima menerapkan skema XML (XSD) tertentu.
Mengapa Menggunakan Konverter JSON ke XML Online?
Menulis XML secara manual dari sumber JSON itu membosankan dan rawan kesalahan. Tag yang tidak cocok, elemen penutup yang terlupakan, dan penumpukan yang salah menghasilkan dokumen yang gagal validasi skema. Konverter menangani penerjemahan struktural secara otomatis.
Kasus Penggunaan JSON ke XML
Aturan Pemetaan JSON ke XML
Karena tidak ada standar universal yang mengatur konversi JSON ke XML, alat yang berbeda menghasilkan output yang berbeda. Tabel di bawah menunjukkan konvensi pemetaan yang digunakan oleh konverter ini dan sebagian besar library populer (js2xmlparser, xmlbuilder, fast-xml-parser). Konvensi saudara berulang untuk larik menjadi dominan karena mencerminkan cara skema XML secara alami memodelkan koleksi — setiap item adalah elemen kelas satu, bukan anak yang dibungkus — dan terintegrasi dengan bersih dengan kueri XPath dan transformasi XSLT.
| JSON Type | JSON Example | XML Output |
|---|---|---|
| Object | {"name": "Alice"} | <name>Alice</name> |
| Nested object | {"user": {"age": 30}} | <user><age>30</age></user> |
| Array | {"colors": ["red", "blue"]} | <colors>red</colors><colors>blue</colors> |
| String | "hello" | <root>hello</root> |
| Number | 42 | <root>42</root> |
| Boolean | true | <root>true</root> |
| Null | null | <root/> |
| Empty object | {} | <root/> |
| Empty array | [] | (no child elements) |
Contoh Kode
Berikut adalah cuplikan kode yang dapat dijalankan untuk mengonversi JSON ke XML di tiga lingkungan. Setiap contoh menghasilkan XML yang terbentuk dengan baik dari objek JSON sampel.
import { create } from 'xmlbuilder2';
const json = {
order: {
id: 1024,
items: [
{ sku: "A1", qty: 2 },
{ sku: "B3", qty: 1 }
],
shipped: false
}
};
const xml = create({ version: '1.0' })
.ele(json)
.end({ prettyPrint: true });
console.log(xml);
// → <?xml version="1.0"?>
// → <order>
// → <id>1024</id>
// → <items>
// → <sku>A1</sku>
// → <qty>2</qty>
// → </items>
// → <items>
// → <sku>B3</sku>
// → <qty>1</qty>
// → </items>
// → <shipped>false</shipped>
// → </order>import json
import xmltodict
data = {
"order": {
"id": 1024,
"items": [
{"sku": "A1", "qty": 2},
{"sku": "B3", "qty": 1}
],
"shipped": False
}
}
# xmltodict.unparse expects a single root key
xml = xmltodict.unparse(data, pretty=True)
print(xml)
# → <?xml version="1.0" encoding="utf-8"?>
# → <order>
# → <id>1024</id>
# → <items>
# → <sku>A1</sku>
# → <qty>2</qty>
# → </items>
# → <items>
# → <sku>B3</sku>
# → <qty>1</qty>
# → </items>
# → <shipped>false</shipped>
# → </order>package main
import (
"encoding/json"
"encoding/xml"
"fmt"
)
type Item struct {
SKU string `json:"sku" xml:"sku"`
Qty int `json:"qty" xml:"qty"`
}
type Order struct {
XMLName xml.Name `xml:"order"`
ID int `json:"id" xml:"id"`
Items []Item `json:"items" xml:"items"`
Shipped bool `json:"shipped" xml:"shipped"`
}
func main() {
raw := `{"id":1024,"items":[{"sku":"A1","qty":2},{"sku":"B3","qty":1}],"shipped":false}`
var order Order
json.Unmarshal([]byte(raw), &order)
out, _ := xml.MarshalIndent(order, "", " ")
fmt.Println(xml.Header + string(out))
// → <?xml version="1.0" encoding="UTF-8"?>
// → <order>
// → <id>1024</id>
// → <items>
// → <sku>A1</sku>
// → <qty>2</qty>
// → </items>
// → ...
}