XML do JSON

XML i JSON modelują dane inaczej: XML ma atrybuty i treść mieszaną, JSON ma obiekty i tablice. Konwersja bez strat wymaga konwencji. To narzędzie oferuje trzy: kompaktową (pomija atrybuty), Badgerfish (atrybuty pod @key, tekst pod $) i dosłowną (każdy węzeł XML staje się obiektem JSON z pełną wiernością). Wybierz tę, która pasuje do odbiorcy JSON, na którego celujesz.

Jak przekonwertować XML na JSON

  1. 1

    Wklej XML

    Dowolny poprawny składniowo XML. Przestrzenie nazw są zachowywane.

  2. 2

    Wybierz styl konwersji

    Kompaktowy, Badgerfish lub dosłowny/bezstratny.

  3. 3

    Obsłuż tablice

    Wymuś, by określone elementy zawsze były tablicami (konfigurowalne).

  4. 4

    Skopiuj wyjście JSON

    Ładnie sformatowane lub zminifikowane, do wyboru.

Porównanie trzech stylów

Wejście:

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

Kompaktowy (pomija atrybuty):

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

Badgerfish (atrybuty pod @, tekst pod $):

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

Dosłowny / w stylu JsonML (pełna wierność):

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

Wymuszone tablice

XML nie ma sposobu, by powiedzieć „to jest lista jednego elementu”. Sekwencja jednoelementowa wygląda identycznie jak skalar:

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

Może to serializować się jako {"item": "A"} albo {"item": ["A"]}. Konwerter pozwala oznaczyć nazwy elementów (przez XPath) jako zawsze-tablice, dzięki czemu Twój odbiorca JSON dostaje spójne typy.

Treść mieszana

Treść mieszana, tekst przeplatany z elementami potomnymi, to jedyne miejsce, gdzie każda konwersja XML na JSON traci informacje:

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

Większość stylów albo gubi tekst, albo go zwija. Styl dosłowny zachowuje kolejność za pomocą tablicy:

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

Wnioskowanie typów

Domyślnie wartości są ciągami. Przełącz „parsuj liczby/wartości logiczne”, a konwerter rzutuje 42, 3.14, true, false na odpowiadające typy JSON. Uważaj: atrybut XML id="007" staje się 7 z włączonym rzutowaniem, czego prawdopodobnie nie chcesz.

Kiedy który wybrać

  • Kompaktowy: do czytelnego dla człowieka JSON, gdzie atrybuty są szumem.
  • Badgerfish: gdy potrzebujesz atrybutów i tekstu na tej samej głębokości co dzieci.
  • Dosłowny: gdy musisz wrócić do XML bez strat.

Najczęściej zadawane pytania

Gdy element pojawia się raz, konwerter domyślnie tworzy obiekt; dwa razy lub więcej, tablicę. Użyj opcji wymuszenia tablicy, by ujednolicić, jeśli Twój odbiorca oczekuje jednego kształtu.

Przedrostki przestrzeni nazw są zachowywane w kluczach (ns:title), chyba że włączysz „usuń przestrzenie nazw”. Same deklaracje stają się atrybutami @xmlns:ns na elemencie głównym.

Tryb dosłowny jest najbliższy bezstratności, ale kolejność treści mieszanej między elementami a tekstem jest podchwytliwa. Tryb kompaktowy zdecydowanie gubi atrybuty. Badgerfish to pragmatyczny złoty środek.

Nie. Konwersja działa w Twojej przeglądarce.

Powiązane narzędzia

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