XML naar JSON

XML en JSON modelleren data op verschillende manieren: XML heeft attributen en gemengde inhoud, JSON heeft objecten en arrays. Een conversie zonder verlies vereist een conventie. Dit hulpmiddel biedt er drie: compact (laat attributen weg), Badgerfish (attributen onder @key, tekst onder $) en letterlijk (elke XML-node wordt een JSON-object met volledige getrouwheid). Kies de optie die past bij de JSON-consument die je voor ogen hebt.

Hoe zet je XML om naar JSON

  1. 1

    XML plakken

    Elke goed gevormde XML. Naamruimten blijven behouden.

  2. 2

    Kies de conversiestijl

    Compact, Badgerfish of letterlijk/verliesvrij.

  3. 3

    Arrays afhandelen

    Forceer bepaalde elementen om altijd arrays te zijn (configureerbaar).

  4. 4

    JSON-uitvoer kopiëren

    Mooi opgemaakt of geminificeerd, jouw keuze.

De drie stijlen vergeleken

Invoer:

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

Compact (laat attributen weg):

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

Badgerfish (attributen onder @, tekst onder $):

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

Letterlijk / JsonML-achtig (volledige getrouwheid):

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

Geforceerde arrays

XML heeft geen manier om te zeggen “dit is een lijst van één”. Een reeks met één element ziet er identiek uit als een scalair:

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

Dit kan worden geserialiseerd als {"item": "A"} of als {"item": ["A"]}. De converter laat je elementnamen (via XPath) markeren als altijd-arrays, zodat je downstream JSON-consument consistente typen ontvangt.

Gemengde inhoud

Gemengde inhoud, tekst verweven met onderliggende elementen, is de enige plek waar elke conversie van XML naar JSON informatie verliest:

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

De meeste stijlen laten de tekst weg of vouwen die samen. De letterlijke stijl behoudt de volgorde via een array:

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

Type-inferentie

Standaard zijn waarden strings. Schakel “numeriek/boolean parsen” in en de converter zet 42, 3.14, true en false om naar de bijbehorende JSON-typen. Let op: het XML-attribuut id="007" wordt met conversie aan 7, wat je waarschijnlijk niet wilt.

Wanneer kies je welke

  • Compact: voor mensvriendelijk leesbaar JSON waarbij attributen ruis zijn.
  • Badgerfish: wanneer je attributen en tekst op dezelfde diepte als de onderliggende elementen nodig hebt.
  • Letterlijk: wanneer je verliesvrij terug moet kunnen naar XML.

Veelgestelde vragen

Wanneer een element één keer voorkomt, kiest de converter standaard voor een object; bij twee of meer keer voor een array. Gebruik de optie om een array te forceren zodat het consistent is als je consument één vorm verwacht.

Naamruimte-prefixen blijven behouden in de sleutels (ns:title), tenzij je “naamruimten verwijderen” inschakelt. De declaraties zelf worden @xmlns:ns-attributen op het wortelelement.

De letterlijke modus komt het dichtst bij verliesvrij, maar de volgorde van gemengde inhoud tussen elementen en tekst is lastig. De compacte modus verliest zeker attributen. Badgerfish vormt een pragmatische middenweg.

Nee, de conversie wordt uitgevoerd in uw browser.

Gerelateerde tools

Tool beschikbaar in andere talen