JSON do XML

Wklej dokument JSON i otrzymaj jego odpowiednik w XML z wybraną przez Ciebie nazwą elementu głównego, spójną strategią dla tablic (powtarzające się elementy lub element opakowujący), opcjonalną deklaracją XML oraz czytelnym wcięciem. Przydatne, gdy starszy system wymaga XML, a Twoje dane źródłowe są przechowywane w formacie JSON.

Jak przekształcić JSON w XML

  1. 1

    Wklej JSON

    Obiekt lub tablica na najwyższym poziomie. Nadasz nazwę elementowi głównemu.

  2. 2

    Nazwij element główny

    XML wymaga jednego elementu głównego. Wartość domyślna to `<root>`; nadaj mu sensowną nazwę, np. `<users>` lub `<response>`.

  3. 3

    Wybierz strategię dla tablic

    „Powtarzające się elementy" (każdy element tablicy staje się sąsiednim `<item>`) lub „element opakowujący" (tablica zostaje umieszczona wewnątrz nazwanego elementu opakowującego).

  4. 4

    Skopiuj XML

    Opcjonalna deklaracja XML, poprawne wcięcia oraz wartości z escapowaniem encji dla `<`, `>`, `&` i cudzysłowów.

Przykład – elementy powtarzające się

Wejście:

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

Wyjście:

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

Przykład – element opakowujący dla tablicy

To samo wejście ze strategią „opakowywanie tablic w <item>“:

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

Mapowanie typów

JSON XML
ciąg znaków zawartość tekstowa, z escapowaniem encji
liczba całkowita / dziesiętna zawartość tekstowa (bez adnotacji typu XML)
boolean true / false jako tekst
null pusty element (<foo/>) lub pominięty
tablica powtarzające się elementy lub element opakowujący + elementy
obiekt zagnieżdżony element z elementami podrzędnymi

Atrybuty a elementy

XML odróżnia atrybuty (<user id="1">) od elementów podrzędnych (<user><id>1</id></user>). Konwerter domyślnie używa elementów – są one bezstratne przy konwersji w obie strony. Jeśli docelowy XML wymaga atrybutów, użyj konwencji prefiksu klucza:

  • Klucz JSON @id staje się atrybutem XML id="..." w elemencie nadrzędnym.
  • Klucz JSON #text staje się zawartością tekstową elementu nadrzędnego.

Te konwencje pochodzą z odwzorowań BadgerFish i Parker – dwóch najpowszechniejszych standardów przekształcania JSON w XML.

Zasady escapowania

  • < -> &lt;
  • > -> &gt;
  • & -> &amp;
  • "&quot; (w wartościach atrybutów)
  • '&apos; (opcjonalnie)
  • Bajty w UTF-8 są zachowywane i deklarowane w prologu XML.

Najczęstsze błędy

  • Tablica JSON na poziomie głównym. XML wymaga jednego elementu głównego. Konwerter opakowuje tablicę w <root> (lub dowolną wybraną nazwę).
  • Klucze numeryczne. JSON {"1": "a"} jest dozwolony; nazwy elementów XML nie mogą zaczynać się od cyfry. Konwerter dodaje przed cyfrą podkreślenie (_1) lub pozwala zdefiniować własne odwzorowanie.
  • Tablice mieszane. [1, "two", { "x": true }] nie ma jednoznacznego odwzorowania. Zazwyczaj oznacza to, że JSON wymaga normalizacji przed konwersją.
  • Ogromne dokumenty. XML jest rozwlekły – plik JSON o wielkości 10 MB może stać się plikiem XML o wielkości 20–30 MB. W przypadku bardzo dużych danych rozważ konwersję strumieniową.

Najczęściej zadawane pytania

Zgodnie ze specyfikacją XML wymaga jednego elementu głównego. Jeśli Twój JSON jest tablicą lub zawiera kilka kluczy najwyższego poziomu, konwerter umieszcza wszystko w elemencie głównym o dowolnej nazwie (domyślnie <root>).

Tak. Wykorzystaj konwencję prefiksu @ w kluczach JSON (np. "@id": 1); te klucze stają się atrybutami, a pozostałe zostają elementami podrzędnymi. Odpowiada to odwzorowaniu BadgerFish.

Dwie strategie: powtarzające się sąsiednie elementy (każdy element otrzymuje klucz nadrzędny jako znacznik) lub element opakowujący zawierający elementy <item>. Wybierz ten, który odpowiada docelowemu schematowi XML.

Nie. Konwerter generuje deklarację XML (<?xml version="1.0"?>), ale nie DOCTYPE. W przypadku XML wymagającego referencji do DTD lub XSD dodaj ją ręcznie po konwersji.

Powiązane narzędzia

Narzędzie jest dostępne w innych językach