JSON naar XML

Plak een JSON-document en krijg het XML-equivalent terug, met de naam van het wortelelement die u kiest, een consistente aanpak voor arrays (herhaalde elementen of een omhuller), een optionele XML-declaratie en nette inspringing. Handig wanneer een verouderd systeem XML vereist terwijl uw brongegevens in JSON staan.

Hoe je JSON omzet in XML

  1. 1

    Plak JSON

    Een object of array op het hoogste niveau. U geeft het wortelelement een naam.

  2. 2

    Geef de wortel een naam

    XML vereist één wortelelement. De standaardwaarde is `<root>`; geef het een betekenisvolle naam zoals `<users>` of `<response>`.

  3. 3

    Kies een arraystrategie

    „Herhaalde elementen" (elk array-item wordt een aangrenzend `<item>`) of „omhuller" (de array wordt in een benoemd omhullerelement geplaatst).

  4. 4

    Kopieer de XML

    Optionele XML-declaratie, correcte inspringing en met entiteiten ge-escapete waarden voor `<`, `>`, `&` en aanhalingstekens.

Voorbeeld: herhaalde elementen

Invoer:

{ "users": [ { "name": "Alice" }, { "name": "Bob" } ] }

Uitvoer:

<?xml version="1.0" encoding="UTF-8"?>
<root>
  <users>
    <name>Alice</name>
  </users>
  <users>
    <name>Bob</name>
  </users>
</root>

Voorbeeld: array-omhuller

Dezelfde invoer met de strategie ‘arrays in <item> verpakken’:

<root>
  <users>
    <item>
      <name>Alice</name>
    </item>
    <item>
      <name>Bob</name>
    </item>
  </users>
</root>

Type-mapping

JSON XML
string tekstinhoud, met entiteiten ge-escapet
geheel getal / decimaal tekstinhoud (geen XML-typeannotatie)
boolean true / false als tekst
null leeg element (<foo/>) of weggelaten
array herhaalde elementen of een omhuller met items
object genest element met onderliggende elementen

Attributen versus elementen

XML onderscheidt attributen (<user id="1">) van onderliggende elementen (<user><id>1</id></user>). De converter gebruikt standaard elementen; deze zijn verliesvrij bij heen-en-weer-conversie. Als uw verdere XML attributen vereist, gebruik dan een sleutelprefixconventie:

  • De JSON-sleutel @id wordt een XML-attribuut id="..." op het bovenliggende element.
  • De JSON-sleutel #text wordt de tekstinhoud van het bovenliggende element.

Deze conventies zijn gebaseerd op de toewijzingen van BadgerFish en Parker, de twee meest gebruikte standaarden voor het omzetten van JSON naar XML.

Escape-regels

  • < -> &lt;
  • > -> &gt;
  • & -> &amp;
  • "&quot; (in attribuutwaarden)
  • '&apos; (optioneel)
  • De bytes in UTF-8 worden behouden en zijn gedefinieerd in de XML-prolog.

Veelvoorkomende fouten

  • JSON-array op wortelniveau. XML vereist één enkel wortelelement. De converter verpakt een array in <root> (of welke naam u ook kiest).
  • Numerieke sleutels. JSON {"1": "a"} is geldig; namen van XML-elementen mogen niet met een cijfer beginnen. De converter zet een onderstrepingsteken vóór cijfers (_1) of laat u een eigen toewijzing definiëren.
  • Gemengde arrays. [1, "two", { "x": true }] heeft geen schone toewijzing. Dit betekent meestal dat de JSON eerst moet worden genormaliseerd voordat deze wordt omgezet.
  • Grote documenten. XML is uitgebreid; een JSON-bestand van 10 MB kan een XML-bestand van 20–30 MB worden. Overweeg streamconversie voor zeer grote payloads.

Veelgestelde vragen

Volgens de specificatie vereist XML één enkel wortelelement. Als uw JSON een array is of meerdere sleutels op het hoogste niveau bevat, verpakt de converter alles in een wortelelement dat u kunt benoemen (standaard: <root>).

Ja. Gebruik de conventie met het prefix @ in uw JSON-sleutels (bijvoorbeeld "@id": 1); deze sleutels worden dan attributen, terwijl andere sleutels onderliggende elementen blijven. Dit komt overeen met de BadgerFish-toewijzing.

Er zijn twee strategieën: herhaalde aangrenzende elementen (elk item krijgt de sleutel van de ouder als tag) of een omhuller met <item>-elementen daarin. Kies de optie die het beste past bij het gewenste XML-schema.

Nee. De converter genereert de XML-declaratie (<?xml version="1.0"?>), maar geen DOCTYPE. Voor XML dat een referentie naar een DTD of XSD vereist, voeg deze handmatig toe na de conversie.

Gerelateerde tools

Tool beschikbaar in andere talen