Konwerter JSON na XML
Wklej JSON, uzyskaj XML natychmiast. Konwertuje obiekty, tablice i atrybuty @_ w przeglądarce — nic nie jest przesyłane. Bezpłatne, prywatne, bez rejestracji.
Nasz zespół weryfikuje zachowanie konwersji JSON na XML zgodnie z konwencją fast-xml-parser: prefiks @_ dla atrybutów, #text dla elementów o mieszanej zawartości, normalizacja elementu głównego dla obiektów z wieloma kluczami i tablic najwyższego poziomu oraz escapowanie encji dla znaków specjalnych w treści tekstowej i wartościach atrybutów.
Czym jest konwersja JSON na XML i jak działa?
JSON (JavaScript Object Notation) i XML (Extensible Markup Language) to oba formaty danych strukturalnych, ale mają zasadniczo różne modele: JSON jest drzewem obiektów, tablic, ciągów, liczb, wartości logicznych i null bez koncepcji atrybutów ani ograniczeń elementu głównego dokumentu; XML jest drzewem elementów, które mogą nosić atrybuty i treść tekstową, a dokument musi mieć dokładnie jeden element główny. Konwersja z JSON na XML wymaga zestawu konwencji do przezwyciężenia tej rozbieżności.
Narzędzie używa najszerzej przyjętej konwencji — tej samej co fast-xml-parser (Node.js), xmltodict (Python) i JAXB (Java) — stosowanej w odwrotnej kolejności:
1. Normalizacja elementu głównego. Najważniejsza różnica między JSON a XML to wymóg elementu głównego. JSON nie ma koncepcji elementu głównego; XML wymaga dokładnie jednego. Konwerter automatycznie obsługuje cztery przypadki. Obiekt z jednym kluczem używa tego klucza jako elementu głównego XML: { "config": {...} } → <config>...</config>. Obiekt z wieloma kluczami owija w <root>: { "a": 1, "b": 2 } → <root><a>1</a><b>2</b></root>. Tablica najwyższego poziomu owija jako <root><item>...</item></root>. Prymitywna wartość owija jako <root>wartość</root>.
2. Prefiks @_ → atrybuty XML. Klucze JSON z prefiksem @_ stają się atrybutami XML na okalającym elemencie. { "element": { "@_id": "42", "@_class": "primary" } } produkuje <element id="42" class="primary"/>. Ten prefiks to kanoniczna konwencja — żadna poprawna nazwa elementu XML nie zaczyna się od @, więc nigdy nie ma kolizji z nazwami elementów podrzędnych.
3. #text → treść tekstowa elementu. Gdy element musi mieć zarówno atrybuty, jak i treść tekstową, tekst jest przechowywany pod kluczem #text: { "price": { "@_currency": "USD", "#text": "29.99" } } → <price currency="USD">29.99</price>. Elementy z tylko treścią tekstową (bez kluczy @_) konwertują na zwykłe elementy tekstowe bez tej pośredniości.
4. Tablice → powtarzające się elementy siostrzane o tej samej nazwie. XML dopuszcza wiele elementów podrzędnych o tej samej nazwie; JSON używa tablic dla list uporządkowanych. Tablica JSON pod kluczem produkuje powtarzające się elementy podrzędne reużywające nazwy klucza: { "items": ["a", "b"] } produkuje <items>a</items><items>b</items> (dwa elementy <items> są siostrzane pod rodzicem). Gdy całe wejście JSON jest tablicą najwyższego poziomu, dodawany jest kontener <root> i każdy element staje się podrzędnym elementem <item> — <item> to stała zapasowa nazwa używana tylko w tym przypadku.
5. Symetryczność z XML na JSON. Konwencje @_ i #text używane tutaj to dokładnie te same konwencje używane przez towarzyszący Konwerter XML na JSON. Oznacza to, że konwersja JSON → XML → JSON zachowuje atrybuty, treść tekstową i strukturę elementów — o ile wejściowy JSON stosuje konwencje @_/#text.
Kiedy konwertować JSON na XML? Najczęstsze scenariusze to: (1) wysyłanie danych do starszej usługi SOAP lub XML wymagającej treści żądania XML; (2) generowanie plików konfiguracyjnych XML (Spring, Maven, Ant, zasoby Androida) z danych JSON; (3) tworzenie XML mapy strony lub kanału RSS z danych treści JSON; (4) współpraca z systemami korporacyjnymi (ERP, CRM, EDI) konsumującymi XML; (5) programowe generowanie SVG lub innych formatów graficznych opartych na XML z danych JSON. Aby formatować i walidować wynikowy XML, użyj Formatowania XML.
// Convert JSON to XML in Node.js using fast-xml-parser
import { XMLBuilder } from 'fast-xml-parser';
const data = {
catalog: {
product: {
'@_id': 'P01',
'@_category': 'electronics',
name: 'Wireless Headphones',
price: {
'@_currency': 'USD',
'#text': '79.99'
}
}
}
};
const builder = new XMLBuilder({
attributeNamePrefix: '@_', // @_ keys become XML attributes
textNodeName: '#text', // #text key becomes element text content
ignoreAttributes: false, // process @_ attribute keys
format: true, // pretty-print with indentation
indentBy: ' ', // 2-space indent
});
const xml = builder.build(data);
console.log(xml);
// <catalog>
// <product id="P01" category="electronics">
// <name>Wireless Headphones</name>
// <price currency="USD">79.99</price>
// </product>
// </catalog> Kluczowe funkcje
Konwersja na żywo
Wynik XML aktualizuje się natychmiast podczas wpisywania lub wklejania JSON — bez potrzeby klikania przycisku Konwertuj. Duże dane wejściowe (>200 KB) automatycznie przełączają się na tryb ręczny, aby przeglądarka pozostała responsywna.
Automatyczna normalizacja elementu głównego
XML wymaga dokładnie jednego elementu głównego. Obiekty z jednym kluczem używają swojego klucza jako elementu głównego; obiekty z wieloma kluczami owijają w <root>; tablice najwyższego poziomu stają się <root><item>...</item></root>; prymitywy stają się <root>wartość</root> — zawsze poprawny wynik XML.
Konwencja atrybutów @_ i #text
Klucze z prefiksem @_ stają się atrybutami XML; klucz #text staje się treścią tekstową elementu. Odpowiada to konwencji fast-xml-parser i xmltodict, dzięki czemu wyjście jest symetryczne z towarzyszącym Konwerterem XML na JSON.
Tablice na powtarzające się elementy
Tablice JSON pod kluczem produkują powtarzające się elementy podrzędne reużywające nazwy klucza — bez singularyzacji. { "items": [1, 2, 3] } daje trzy elementy siostrzane <items>. Tablica najwyższego poziomu owija jako <root><item>...</item></root> używając <item> jako stałej dosłownej nazwy.
100% prywatność w przeglądarce
Cała konwersja odbywa się lokalnie w przeglądarce przy użyciu JavaScript. Dane JSON — w tym dane uwierzytelniające, wewnętrzne konfiguracje i wrażliwe ładunki — nigdy nie są wysyłane na żaden serwer, nigdy nie są rejestrowane ani przechowywane.
Symetryczna konwersja w obie strony z XML na JSON
Konwencje @_ i #text są współdzielone z towarzyszącym Konwerterem XML na JSON. Konwersja JSON → XML → JSON wiernie zachowuje atrybuty, treść tekstową i zagnieżdżoną strukturę.
Przykłady
Obiekt odpowiedzi API
{"user":{"id":42,"name":"Alice Kim","email":"alice@example.com","role":"admin","address":{"city":"Seoul","country":"KR"}}} Obiekt JSON z jednym kluczem, gdzie klucz najwyższego poziomu staje się elementem głównym XML. Zagnieżdżony obiekt address produkuje podrzędny element <address> z podrzędnymi elementami <city> i <country>. Ponieważ zewnętrzny obiekt ma dokładnie jeden klucz ("user"), nie jest dodawany żaden kontener — sam «user» jest elementem głównym. Liczby takie jak 42 stają się treścią tekstową verbatim: <id>42</id>.
Tablica najwyższego poziomu
[{"id":1,"name":"Widget A","price":9.99},{"id":2,"name":"Widget B","price":14.99},{"id":3,"name":"Widget C","price":4.49}] Gdy całe wejście jest tablicą JSON (nieowiniętą w obiekt), konwerter produkuje <root><item>...</item></root>. Każdy element tablicy staje się podrzędnym elementem <item> — «item» to stała dosłowna nazwa kontenera używana wyłącznie dla tablic najwyższego poziomu. Jest to jedyny przypadek, gdy pojawia się <item>; tablice pod kluczem obiektu reużywają nazwy tego klucza dla każdego elementu.
Obiekt z atrybutami i treścią tekstową
{"catalog":{"product":{"@_id":"P01","@_category":"electronics","name":"Wireless Headphones","price":{"@_currency":"USD","#text":"79.99"}}}} Klucze z prefiksem @_ stają się atrybutami XML na elemencie: @_id staje się id="P01", a @_category staje się category="electronics" na elemencie <product>. Klucz #text staje się treścią tekstową elementu — więc obiekt price produkuje <price currency="USD">79.99</price>. To dobrze współdziała z Konwerterem XML na JSON, który używa tych samych konwencji @_ i #text.
Jak używać
- 1
Wklej dane JSON
Wprowadź lub wklej dane JSON do pola wejściowego powyżej. Możesz też kliknąć «Wczytaj przykład», aby wypróbować próbkę — obiekt odpowiedzi API, ładunek tablicowy lub obiekt używający atrybutów @_ i #text.
- 2
Zobacz wynik XML na żywo
XML pojawia się natychmiast w panelu wyjściowym. Obiekty z jednym kluczem używają swojego klucza jako elementu głównego; obiekty z wieloma kluczami owijają w <root>; klucze z prefiksem @_ stają się atrybutami; tablice stają się powtarzającymi się elementami podrzędnymi. Dostosuj wcięcie (2 lub 4 spacje) według potrzeb.
- 3
Kopiuj lub pobierz
Kliknij Kopiuj, aby przenieść XML do schowka, lub Pobierz, aby zapisać jako plik .xml. Aby walidować lub ponownie sformatować wynik, wklej go do Formatowania XML.
Typowe problemy przy konwersji
Obiekt z wieloma kluczami otrzymuje nieoczekiwany kontener <root>
Jeśli JSON najwyższego poziomu ma wiele kluczy, wyjście owija je wszystkie w <root>. Jest to poprawny XML (który wymaga jednego elementu głównego), ale może nie pasować do docelowego schematu. Przekształć JSON do obiektu z jednym kluczem, aby kontrolować nazwę elementu głównego.
// Input: { "status": 200, "data": { "id": 1 } }
// Output: <root><status>200</status><data><id>1</id></data></root>
// Root is <root> — may not match your schema // Wrap in a named key to control the root element
// Input: { "response": { "status": 200, "data": { "id": 1 } } }
// Output: <response><status>200</status><data><id>1</id></data></response> Tablica najwyższego poziomu otrzymuje kontener <root><item>
Tablica JSON najwyższego poziomu nie ma nazwy elementu, więc jest owijana jako <root><item>...</item></root>. Jeśli chcesz znaczących nazw znaczników, najpierw owiń tablicę w nazwany obiekt.
// Input: [{ "id": 1 }, { "id": 2 }]
// Output: <root><item><id>1</id></item><item><id>2</id></item></root>
// Tag names are generic // Wrap in a named key for meaningful tag names
// Input: { "products": [{ "id": 1 }, { "id": 2 }] }
// Output: <root><products><id>1</id></products><products><id>2</id></products></root>
// Each array element reuses the key name "products" as its tag Brakujący prefiks @_ dla kluczy atrybutów
Aby wyprodukować atrybut XML, klucz JSON musi mieć prefiks @_. Bez prefiksu klucz jest traktowany jako element podrzędny, nie atrybut.
// Input: { "tag": { "id": "42", "name": "Alice" } }
// Output: <tag><id>42</id><name>Alice</name></tag> ← id is a child element // Use @_ prefix for attributes
// Input: { "tag": { "@_id": "42", "name": "Alice" } }
// Output: <tag id="42"><name>Alice</name></tag> ← id is an attribute Element z atrybutami i tekstem — brakujący #text
Jeśli chcesz, aby element miał zarówno atrybuty XML, jak i treść tekstową, musisz użyć klucza #text dla tekstu. Bez niego tekst nie ma gdzie się znaleźć i element będzie pusty lub spowoduje błąd.
// Input: { "price": { "@_currency": "USD", "value": "29.99" } }
// Output: <price currency="USD"><value>29.99</value></price>
// Text is a child element, not text content // Use #text for element text content
// Input: { "price": { "@_currency": "USD", "#text": "29.99" } }
// Output: <price currency="USD">29.99</price> ← text content Klucze JSON z nieprawidłowymi znakami XML
Nazwy elementów XML nie mogą zaczynać się od cyfry ani zawierać spacji, dwukropków (poza prefiksami przestrzeni nazw) ani większości znaków specjalnych. Jeśli klucze JSON zawierają te znaki, wynikowy XML będzie nieprawidłowy. Zmień nazwy problematycznych kluczy przed konwersją lub oczyść je w kroku po przetworzeniu.
// JSON key starts with digit — invalid XML element name
// Input: { "1stItem": "value" }
// Output: <1stItem>value</1stItem> ← invalid XML // Use a valid XML element name
// Input: { "firstItem": "value" }
// Output: <firstItem>value</firstItem> ← valid XML Znaki specjalne w wartościach nieescapowane
Treść tekstowa XML nie może zawierać surowych znaków <, >, &, ani " — muszą być escapowane jako <, >, & i ". Konwerter automatycznie escapuje te znaki w treści tekstowej elementów i wartościach atrybutów. Jeśli dalsze przetwarzanie podwójnie je escapuje, sprawdź, czy parser XML konsumuje surowe bajty XML, a nie ponownie escapuje już escapowaną zawartość.
// JSON: { "query": "name = 'Alice' & role = 'admin'" }
// Converter outputs: <query>name = 'Alice' & role = 'admin'</query>
// If double-processed: &amp; — consumer is re-escaping // Converter output is correct — consume it as XML, not as a raw string // <query>name = 'Alice' & role = 'admin'</query> // XML parser decodes to: name = 'Alice' & role = 'admin'
Typowe zastosowania
- Wywoływanie SOAP i starszych usług webowych XML
- Zbuduj ładunek JSON w aplikacji, przekonwertuj go na XML i wyślij POST na punkt końcowy SOAP. Pozwala to uniknąć ręcznego budowania ciągów XML i umożliwia pracę z danymi w natywnej strukturze JSON aż do momentu, gdy trzeba je serializować dla starszego serwisu.
- Generowanie plików konfiguracyjnych XML
- Spring, Maven, Ant, Tomcat i Android — wszystkie używają formatów konfiguracyjnych XML. Generuj lub transformuj dane konfiguracyjne jako JSON — łatwiejsze do porównywania i wersjonowania — a następnie konwertuj na XML do wdrożenia.
- Tworzenie XML mapy strony i kanału RSS
- Systemy zarządzania treścią i generatory stron statycznych często przechowują metadane stron jako JSON. Przekonwertuj te metadane na XML sitemap.xml lub kanał RSS do zgłaszania do wyszukiwarek lub syndykowania treści dla czytników kanałów.
- Integracja danych korporacyjnych (EDI / ERP / CRM)
- Systemy ERP (SAP, Oracle), platformy CRM i sieci EDI często wymieniają dane w XML. Przekonwertuj eksporty JSON z nowoczesnych REST API na XML, aby zasilać te systemy bez budowania niestandardowego serializatora XML.
- Pliki zasobów Androida
- Zasoby ciągów Androida, ograniczenia układów i wpisy manifestu to XML. Generuj lub aktualizuj pliki zasobów programatycznie ze źródeł danych JSON i konwertuj do wymaganego formatu XML dla systemu kompilacji Androida.
- Generowanie SVG i grafiki wektorowej
- SVG to XML. Buduj strukturę SVG jako dane JSON — ścieżki, kształty, kolory, transformacje — a następnie konwertuj na XML, aby tworzyć poprawne pliki SVG dla web, druku lub narzędzi do edycji wektorowej.
Szczegóły techniczne
- Parsowanie JSON zgodne z RFC 8259
- Dane wejściowe JSON są parsowane przy użyciu natywnego JSON.parse() przeglądarki, który jest w pełni zgodny z RFC 8259. Zapewnia to dokładne komunikaty błędów składni z informacją o pozycji (numer wiersza i kolumny, najlepsze przybliżenie) i obsługuje wszystkie typy danych JSON: ciągi znaków, liczby, wartości logiczne, null, tablice i obiekty.
- Niestandardowy rekurencyjny serializator JSON na XML
- Po sparsowaniu niestandardowy rekurencyjny serializator przechodzi drzewo JSON. Klucze obiektów zaczynające się od @_ są emitowane jako atrybuty XML na elemencie nadrzędnym. Klucz #text jest emitowany jako treść tekstowa elementu. Zwykłe klucze obiektów stają się elementami podrzędnymi. Wartości tablic produkują powtarzające się elementy siostrzane o tej samej nazwie. Znaki specjalne (<, >, &, ", ') w treści tekstowej i wartościach atrybutów są escapowane do ich referencji encji XML.
- Normalizacja elementu głównego
- Ponieważ XML wymaga dokładnie jednego elementu głównego, serializator stosuje normalizację elementu głównego przed budowaniem dokumentu: obiekty z jednym kluczem używają klucza jako elementu głównego; obiekty z wieloma kluczami i tablice najwyższego poziomu otrzymują syntetyczny kontener <root>. Gwarantuje to, że wyjście jest zawsze poprawnym strukturalnie XML, niezależnie od kształtu wejścia.
- 100% w przeglądarce — bez przesyłania, bez serwera
- Całe przetwarzanie odbywa się w silniku JavaScript przeglądarki. Żadne dane nie są przesyłane przez sieć w żadnym momencie. Dane wejściowe większe niż 200 KB automatycznie przełączają się z trybu na żywo na tryb ręczny (wymagający jawnego kliknięcia Konwertuj), aby utrzymać responsywność przeglądarki podczas intensywnej serializacji.
Dobre praktyki
- Kontroluj element główny przez obiekt z jednym kluczem
- Najczystszym sposobem na uzyskanie znaczącego XML jest upewnienie się, że JSON najwyższego poziomu jest obiektem z jednym kluczem, którego nazwa jest pożądaną nazwą elementu głównego. Owijanie danych z wieloma kluczami pod jedną nazwaną nazwą daje semantycznie znaczący element główny zamiast ogólnego kontenera <root>.
- Używaj @_ i #text dla XML z wieloma atrybutami
- Jeśli docelowy schemat XML używa wielu atrybutów (powszechne w plikach konfiguracyjnych, SVG i kopertach SOAP), przekształć JSON do używania kluczy z prefiksem @_ i #text przed konwersją. Wynikowy XML będzie dokładnie pasować do docelowego schematu bez dalszego przetwarzania.
- Owijaj tablice w nazwane obiekty dla znaczących nazw znaczników
- Tablica najwyższego poziomu produkuje ogólny wzorzec <root><item>...</item></root>, gdzie <item> to stała dosłowna nazwa. Owijanie tablicy pod nazwanym kluczem — { "products": [...] } — produkuje powtarzające się elementy <products> (nazwa klucza jest reużywana dla każdego elementu tablicy) pod kontenerem <root>. Daje to domenowo znaczącą nazwę znacznika i jest prawie zawsze lepsze dla XML, który będzie parsowany lub walidowany przez schemat.
- Waliduj wynik za pomocą Formatowania XML
- Po konwersji wklej wynikowy XML do Formatowania XML, aby walidować poprawność strukturalną, sprawdzić wcięcia i zidentyfikować problemy strukturalne przed wysłaniem XML do dalszego serwisu lub zatwierdzeniem w systemie kontroli wersji.
- Oczyść klucze JSON przed konwersją
- Nazwy elementów XML muszą zaczynać się od litery lub podkreślenia i nie mogą zawierać spacji ani większości znaków specjalnych. Jeśli klucze JSON pochodzą z zewnętrznego źródła (nazwa kolumny bazy danych, nazwa pola API lub dane wejściowe użytkownika), sprawdź ich poprawność jako nazw XML przed konwersją, aby uniknąć nieprawidłowego wyjścia.
Najczęściej zadawane pytania
Czy dane JSON są wysyłane na serwer podczas korzystania z narzędzia?
Jak narzędzie decyduje, co jest elementem głównym XML?
Dlaczego obiekt JSON z wieloma kluczami jest owijany w <root>?
Jak tablica JSON najwyższego poziomu konwertuje się na XML?
Jak przekonwertować klucze JSON na atrybuty XML?
Do czego służy klucz #text?
Czy wcięcia wpływają na strukturę XML?
Jak tablica JSON zagnieżdżona wewnątrz obiektu konwertuje się na XML?
Jak przekonwertować XML z powrotem na JSON?
Czy mogę walidować lub formatować wynikowy XML?
Czy istnieje limit rozmiaru danych wejściowych JSON?
Jakie typy JSON są obsługiwane?
Powiązane narzędzia
Zobacz wszystkie narzędzia →Tablica ASCII i konwerter ASCII
Kodowanie i formatowanie
Pełna tablica ASCII: 128 znaków w systemie dziesiętnym, szesnastkowym, ósemkowym i dwójkowym oraz dwukierunkowy konwerter. Znaki sterujące z sekwencjami escape, notacją z daszkiem i miejscem, gdzie naprawdę się je spotyka.
Koder i dekoder Base64
Kodowanie i formatowanie
Zakoduj i zdekoduj Base64 online za darmo. Konwersja w czasie rzeczywistym z pełną obsługą UTF-8 i emoji. 100% w przeglądarce, bez rejestracji.
Konwerter Base64 na obraz
Kodowanie i formatowanie
Zdekoduj ciąg Base64 lub data URI z powrotem na obraz w przeglądarce. Podejrzyj, odczytaj wymiary i MIME, a potem pobierz jako PNG, JPG, GIF, SVG. Bez przesyłania.
Konwerter CSV na JSON
Kodowanie i formatowanie
Konwertuj CSV na JSON w przeglądarce. RFC 4180, wnioskowanie typów, nagłówek, big-int safe. 100% prywatnie, bez wysyłki.
Konwerter .env na JSON
Kodowanie i formatowanie
Wklej plik .env i od razu otrzymaj JSON. Hasła, klucze API i tokeny nigdy nie opuszczają przeglądarki — 100% prywatnie, bez wysyłania, parser dotenv.
Darmowy dekoder encji HTML — unescape HTML
Kodowanie i formatowanie
Dekoduj encje HTML i unescape HTML online — za darmo, bez rejestracji, w 100% w przeglądarce. Zamienia odwołania nazwane, dziesiętne & szesnastkowe z powrotem na znaki; nic nie jest wysyłane.