Jak przekonwertować XML na JSON
- Wklej XML, upuść plik
.xmlna edytor lub wczytaj go z adresu URL. JSON pojawia się na bieżąco podczas pisania. - Dostosuj prefiks atrybutów i klucz tekstu oraz zdecyduj, czy zawsze używać tablic, konwertować liczby i wartości logiczne, czy ignorować prefiksy przestrzeni nazw.
- Skopiuj JSON lub pobierz go jako plik
.json.
Jak XML jest odwzorowywany w JSON
| XML | JSON |
|---|---|
<name>Ada</name> | "name": "Ada" |
<price>9.90</price> | "price": 9.90 – cyfry zachowane dokładnie |
<item id="7">Pen</item> | "item": {"@id": 7, "#text": "Pen"} |
<tag>a</tag><tag>b</tag> | "tag": ["a", "b"] |
<note/> | "note": null |
<![CDATA[a < b]]> | tekst "a < b" |
<soap:Body> z opcją Ignoruj prefiksy przestrzeni nazw | "Body" |
Dlaczego opcja „Zawsze używaj tablic” ma znaczenie
Element, który występuje raz, staje się pojedynczą wartością, ale gdy występuje dwa razy – tablicą. Kod odczytujący JSON musi wtedy obsługiwać oba kształty – to klasyczny błąd, gdy lista czasem zawiera tylko jeden element. Zaznacz Zawsze używaj tablic dla elementów podrzędnych, aby wszędzie otrzymać tablice: struktura jest przewidywalna kosztem kilku dodatkowych nawiasów.
XML na JSON w kodzie
- Python:
xmltodict.parse(text)(pakiet xmltodict) - JavaScript:
new XMLParser({ ignoreAttributes: false }).parse(text)(pakiet fast-xml-parser) - C#:
JsonConvert.SerializeXmlNode(doc)(Newtonsoft.Json) - Wiersz poleceń:
yq -p xml -o json file.xml
Najczęściej zadawane pytania
Czy konwersja jest bezstratna?
Nazwy elementów, atrybuty i tekst są zachowywane, a liczby zachowują dokładnie te same cyfry. Komentarzy, instrukcji przetwarzania i położenia tekstu między elementami podrzędnymi (zawartość mieszana) nie da się odwzorować w JSON.
Czy mogę przekonwertować JSON z powrotem na XML?
Tak, za pomocą konwertera JSON na XML w naszym siostrzanym serwisie JSON Formatter, który stosuje te same konwencje @ i #text.
Co dzieje się z przestrzeniami nazw?
Nazwy z prefiksem, takie jak soap:Body, są domyślnie zachowywane jako klucze, a deklaracje xmlns pojawiają się jako atrybuty. Zaznacz Ignoruj prefiksy przestrzeni nazw, aby otrzymać zwykłe nazwy, np. Body, bez deklaracji.
Dlaczego wartość jest ciągiem znaków, a nie liczbą?
Wartości takie jak 007 czy 1,000 nie są zwykłymi liczbami dziesiętnymi, więc pozostają ciągami znaków, aby uniknąć utraty danych. Odznacz Konwertuj liczby i true/false, aby zachować każdą wartość jako ciąg znaków.