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.
Opcje · 2 spacje · JSON → XML
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": {...} } →
**2. Prefiks @_ → atrybuty XML.** Klucze JSON z prefiksem @_ stają się atrybutami XML na okalającym elemencie. { "element": { "@_id": "42", "@_class": "primary" } } produkuje
**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" } } →
**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
**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
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
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
z podrzędnymi elementamiTablica 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
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
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
; 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
Jeśli JSON najwyższego poziomu ma wiele kluczy, wyjście owija je wszystkie w
// 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
Tablica JSON najwyższego poziomu nie ma nazwy elementu, więc jest owijana jako
// 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
. 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
. - 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
, gdzie- ...
- to stała dosłowna nazwa. Owijanie tablicy pod nazwanym kluczem — { "products": [...] } — produkuje powtarzające się elementy
(nazwa klucza jest reużywana dla każdego elementu tablicy) pod kontenerem . 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 ?
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 →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 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.
JSON Diff (Porównaj)
Kodowanie i formatowanie
Porównaj dwa pliki JSON natychmiast w przeglądarce. Podświetlanie obok siebie, wynik JSON Patch (RFC 6902), ignorowanie szumliwych pól jak znaczniki czasu i identyfikatory. 100% prywatności, bez przesyłania.
Formatowanie i walidacja JSON
Kodowanie i formatowanie
Formatuj, waliduj i upiększaj JSON w przeglądarce. Bezpłatne narzędzie z kontrolą składni, wykrywaniem błędów i minifikacją. 100% prywatnie.
Walidator JSON Schema
Kodowanie i formatowanie
Sprawdź dane JSON względem dowolnego JSON Schema natychmiast w przeglądarce. Obsługa Draft 2020-12, 2019-09 i Draft-07 z dokładnymi ścieżkami błędów. 100% prywatnie — bez wysyłania, bez konta, za darmo.
Konwerter JSON na CSV
Kodowanie i formatowanie
Konwertuj JSON na CSV w przeglądarce. Presety RFC 4180, Excel-EU, TSV, Pipe. Spłaszczanie zagnieżdżeń lub stringify. 100% prywatnie, bez wysyłki.