XML ke JSON

XML dan JSON memodelkan data secara berbeda: XML punya atribut dan mixed content, JSON punya objek dan array. Mengonversi tanpa kehilangan butuh sebuah konvensi. Tool ini menawarkan tiga: compact (membuang atribut), Badgerfish (atribut di bawah @key, teks di bawah $), dan literal (setiap node XML menjadi objek JSON dengan kesetiaan penuh). Pilih yang cocok dengan konsumen JSON yang Anda tuju.

Cara mengonversi XML ke JSON

  1. 1

    Tempel XML

    XML well-formed apa pun. Namespace dipertahankan.

  2. 2

    Pilih gaya konversi

    Compact, Badgerfish, atau literal/lossless.

  3. 3

    Tangani array

    Paksa elemen tertentu agar selalu menjadi array (dapat dikonfigurasi).

  4. 4

    Salin output JSON

    Pretty-print atau minified, sesuai pilihan Anda.

Perbandingan tiga gaya

Input:

<book id="1" lang="en">
  <title>1984</title>
  <author>Orwell</author>
</book>

Compact (membuang atribut):

{
  "book": {
    "title": "1984",
    "author": "Orwell"
  }
}

Badgerfish (atribut di bawah @, teks di bawah $):

{
  "book": {
    "@id": "1",
    "@lang": "en",
    "title": { "$": "1984" },
    "author": { "$": "Orwell" }
  }
}

Literal / mirip JsonML (kesetiaan penuh):

{
  "book": {
    "@attributes": { "id": "1", "lang": "en" },
    "title": "1984",
    "author": "Orwell"
  }
}

Array yang dipaksakan

XML tidak punya cara untuk berkata “ini adalah daftar berisi satu”. Urutan berisi satu elemen tampak identik dengan skalar:

<items>
  <item>A</item>
</items>

Itu bisa diserialisasi sebagai {"item": "A"} atau {"item": ["A"]}. Konverter memungkinkan Anda menandai nama elemen (dengan XPath) sebagai selalu-array, sehingga konsumen JSON hilir Anda mendapat tipe yang konsisten.

Konten campuran

Mixed content, teks yang berselang dengan elemen anak, adalah satu-satunya tempat di mana konversi XML-ke-JSON apa pun kehilangan informasi:

<p>Hello <em>world</em>!</p>

Sebagian besar gaya membuang teks atau memadatkannya. Gaya literal mempertahankan urutan melalui array:

{
  "p": {
    "@content": ["Hello ", { "em": "world" }, "!"]
  }
}

Inferensi tipe

Secara default nilainya berupa string. Aktifkan “parse numeric/boolean” dan konverter akan mengonversi 42, 3.14, true, false ke tipe JSON yang sesuai. Hati-hati: atribut XML id="007" menjadi 7 saat casting aktif, yang kemungkinan tidak Anda inginkan.

Kapan memilih yang mana

  • Compact: untuk JSON yang mudah dibaca manusia di mana atribut hanya gangguan.
  • Badgerfish: ketika Anda butuh atribut dan teks pada kedalaman yang sama dengan anak.
  • Literal: ketika Anda harus mengembalikan ke XML tanpa kehilangan.

Pertanyaan yang Sering Diajukan

Saat sebuah elemen muncul sekali, konverter default ke objek; dua kali atau lebih, menjadi array. Gunakan opsi force-array agar konsisten jika konsumen Anda mengharapkan satu bentuk.

Prefiks namespace dipertahankan dalam key (ns:title) kecuali Anda mengaktifkan “strip namespaces”. Deklarasinya sendiri menjadi atribut @xmlns:ns pada elemen root.

Mode literal paling mendekati lossless tetapi pengurutan mixed content antara elemen dan teks itu rumit. Mode compact jelas kehilangan atribut. Badgerfish adalah jalan tengah yang pragmatis.

Tidak. Konversi berjalan di browser Anda.

Alat Terkait

Alat ini tersedia dalam bahasa lain