Konwerter JSON na XML - Atrybuty, Tablice, Encje

    Zamień JSON na XML albo XML na JSON: atrybuty z @, tablice jako powtórzone elementy, liczby bez zaokrągleń i błąd składni wskazany z numerem linii i kolumny.

    Parametry

    Wprowadź dane do obliczeń

    Co wklejasz i co chcesz dostać

    0 / 20000 znaków

    Do 20 000 znaków

    Wygląd wyniku

    Postęp wypełniania0 / 2 pól

    💡 Wypełnij wszystkie wymagane pola, aby odblokować przycisk obliczania

    Konwerter JSON na XML i XML na JSON z kontrolą błędów

    Dla JSON i XML nie istnieje jedno oficjalne mapowanie, dlatego każdy konwerter musi przyjąć jakąś konwencję i dobrze, żeby mówił ją wprost. Ten zamienia JSON na XML i z powrotem według prostych reguł: klucz z @ staje się atrybutem, tablica powtórzonym elementem, a liczba przechodzi cyfra w cyfrę, więc 98765432109876543210 nie zamieni się po drodze w 98765432109876540000. Błąd składni wskazuje z numerem linii i kolumny, np. {"a":1,} daje komunikat o przecinku w linii 1, kolumnie 7.

    Problem: XML ma atrybuty, tekst między znacznikami, jeden element główny i nazwy, które nie mogą zaczynać się od cyfry ani zawierać spacji. JSON ma tablice, typy liczbowe, null i dowolne klucze. Konwerter, który tego nie pokazuje, oddaje XML, którego parser po drugiej stronie nie przyjmie, albo JSON, w którym jedna pozycja na liście jest tekstem, a dwie już tablicą.

    Co dokładnie robi ten konwerter

    Sprawdza składnię zanim cokolwiek zamieni. JSON według RFC 8259 (bez komentarzy, przecinków na końcu i apostrofów), XML według W3C XML 1.0 (zgodne znaczniki, cudzysłowy w atrybutach, encje). Komunikat mówi, co jest źle i gdzie.
    Poprawia nazwy, które XML odrzuciłby. Klucz 2etap staje się _2etap, a data dostawy zamienia się w data_dostawy. Każda taka zmiana jest wypisana pod wynikiem, bo w drugą stronę oryginalna nazwa już nie wróci.
    Nie rusza liczb. 1.50 zostaje 1.50, 1E-7 zostaje 1E-7, a długi identyfikator nie traci końcowych cyfr. Przy XML na JSON kod 0042 zostaje tekstem, bo zero na początku nie jest dozwolone w liczbie JSON.

    Jak przekonwertować JSON na XML - krok po kroku

    1. Kierunek - „JSON na XML” albo „XML na JSON”. Od wyboru zależy, które pola zobaczysz niżej.
    2. Dane - wklej JSON albo XML, do 20 000 znaków.
    3. Element główny (JSON na XML) - zostaw puste, a jedyny klucz na górze JSON stanie się elementem głównym; przy kilku kluczach powstanie <root>. Możesz też wpisać własną nazwę, np. dane.
    4. Klucze z @ i #text (JSON na XML) - jako atrybuty i tekst elementu albo jako zwykłe elementy.
    5. Typy wartości (XML na JSON) - automatycznie (liczby, true, false, puste jako null) albo wszystko jako tekst.
    6. Wcięcie - 2 albo 4 spacje, tabulator albo zapis w jednej linii; przy XML jeszcze deklaracja <?xml version="1.0" encoding="UTF-8"?> na początku.
    7. Odczytaj wynik - kliknij w kod, zaznaczy się cały. Pod spodem są liczby elementów i atrybutów oraz lista zmian.

    Tabela decyzyjna: jak zapisze się każdy fragment JSON

    Wiersze pokazują wynik konwertera dla typowych konstrukcji, w zapisie w jednej linii. Ostatnia kolumna mówi, na co uważać przy konwersji z powrotem.

    JSON XML Uwaga
    {"id":1,"nazwa":"Test"}<root><id>1</id><nazwa>Test</nazwa></root>Dwa klucze na górze, więc potrzebny element główny
    {"x":{"a":null,"b":""}}<x><a/><b></b></x>null i pusty tekst zapisane różnie
    [1,2]<root><item>1</item><item>2</item></root>Tablica na górze: elementy item
    {"r":[[1,2]]}<root><r><item>1</item><item>2</item></r></root>Tablica w tablicy dostaje opakowanie
    {"t":{"@typ":"uwaga","#text":"Cena < 100 zł & darmowa dostawa"}}<t typ="uwaga">Cena &lt; 100 zł &amp; darmowa dostawa</t>Znaki < i & zamienione na encje
    {"dane":{"data dostawy":"pilne","2etap":true}}<dane><data_dostawy>pilne</data_dostawy><_2etap>true</_2etap></dane>Nazwy poprawione, nie wrócą do oryginału
    {"r":{"a:b":1}}<r><a_b>1</a_b></r>Prefiks bez deklaracji @xmlns:a zamieniony
    {"nr":98765432109876543210}<nr>98765432109876543210</nr>Liczba bez zaokrąglenia

    Pięć konwersji z prawdziwymi danymi

    Zamówienie z API do systemu, który przyjmuje tylko XML. JSON {"zamowienie":{"@numer":"2481","klient":"Firma ABC","pozycja":[{"nazwa":"Papier A4","ilosc":5},{"nazwa":"Toner","ilosc":1}]}}
    Wynik: element <zamowienie numer="2481"> z dwoma elementami <pozycja>, razem 8 elementów i 1 atrybut. Tablica pozycja nie tworzy opakowania, każdy jej element to osobny <pozycja>.
    Feed produktowy z XML do aplikacji w JavaScript. XML <produkt id="17" dostepny="true"><nazwa>Kubek</nazwa><cena waluta="PLN">24.90</cena><kod>0042</kod></produkt>
    Wynik: "@id": 17, "@dostepny": true, "cena": {"@waluta": "PLN", "#text": 24.90}, "kod": "0042". Łącznie 4 elementy i 3 atrybuty, cena zachowuje zapis 24.90.
    Lista, która raz ma jedną pozycję, a raz dwie. <lista><e>a</e></lista> daje {"lista":{"e":"a"}}, a <lista><e>a</e><e>b</e></lista> daje {"lista":{"e":["a","b"]}}.
    Wynik: ten sam element raz jest tekstem, raz tablicą. Kod, który czyta taki JSON, musi obsłużyć oba przypadki, bo sam XML nie mówi, że e jest listą.
    JSON skopiowany z edytora z przecinkiem na końcu. {"a":1,}
    Wynik: brak konwersji i komunikat „Błąd w JSON (linia 1, kolumna 7): Przecinek przed nawiasem „}””, czyli wskazany jest sam przecinek. JavaScript przyjmuje taki zapis w kodzie jako literał obiektu, ale JSON.parse i standard JSON już nie.
    XML z pomylonym znacznikiem zamykającym. <a><b>tekst</a>
    Wynik: „Błąd w XML (linia 1, kolumna 12): Znacznik zamykający </a> nie pasuje do otwartego <b> (otwarty: linia 1, kolumna 4)”. Konwerter wskazuje oba miejsca, więc od razu widać, którego zamknięcia brakuje.

    Szybka ściągawka: znaki specjalne w XML

    Specyfikacja XML 1.0 (sekcja 2.4) zabrania dosłownych znaków & i < w tekście. Konwerter zamienia je sam; tabela przydaje się, gdy poprawiasz XML ręcznie.

    Znak W tekście elementu W wartości atrybutu
    &&amp; (obowiązkowo)&amp; (obowiązkowo)
    <&lt; (obowiązkowo)&lt; (obowiązkowo)
    >&gt; (wymagane w ciągu ]]>)dowolnie
    "bez zmian&quot;, gdy atrybut jest w "..."
    nowa linia, tabulatorbez zmian&#10;, &#9; (dosłowne parser zamienia na spacje)
    &nbsp; i inne encje HTMLnieznane w XML bez DTD, użyj odwołania liczbowego, np. &#160;

    Pytania o konwersję JSON i XML

    Czy po konwersji XML na JSON i z powrotem dostanę ten sam plik?
    Dla prostych dokumentów tak: <osoba id="7"><imie>Anna</imie></osoba> wraca znak w znak. Gubią się komentarze, deklaracja, kolejność tekstu przemieszanego z elementami i różnica między jednym elementem a listą z jednym elementem.
    Dlaczego mój XML z DOCTYPE jest odrzucany?
    Konwerter nie przetwarza DTD ani własnych encji. To celowe: OWASP zaleca odrzucanie deklaracji DOCTYPE, bo rozwijanie encji z niezaufanego XML prowadzi do ataków XXE. Usuń linię <!DOCTYPE ...>, a encje typu &nbsp; zamień na odwołania liczbowe.
    Jak zrobić atrybut XML z poziomu JSON?
    Dodaj klucz z małpą, np. "@waluta": "PLN", a tekst elementu wpisz pod "#text". Atrybutem może być tylko tekst, liczba albo true i false; obiekt pod kluczem z @ staje się zwykłym elementem.
    Co z przestrzeniami nazw, np. soap:Envelope?
    Prefiks zostaje, jeśli jest zadeklarowany w tym samym albo nadrzędnym obiekcie przez "@xmlns:soap": "adres". Bez deklaracji dwukropek zamienia się na podkreślenie, bo parsery obsługujące przestrzenie nazw odrzucają niezadeklarowany prefiks.
    Czy mogę wkleić dane klientów albo klucze API?
    Lepiej nie. Konwersja działa na serwerze, a wpisane dane trafiają do dziennika obliczeń. Do danych poufnych użyj biblioteki we własnym środowisku, a tutaj sprawdź strukturę na danych przykładowych.
    Jaki największy plik przyjmuje konwerter?
    Do 20 000 znaków i 200 poziomów zagnieżdżenia. Typowa odpowiedź API czy fragment feedu mieści się z zapasem; cały eksport z bazy przekonwertujesz skryptem.

    Powiązane narzędzia

    Generator Danych Testowych

    Fikcyjne osoby z PESEL, NIP, REGON i IBAN o poprawnych sumach kontrolnych, w JSON, CSV albo SQL - Zobacz generator

    Formatowanie JSON

    Wcięcia, minifikacja i walidacja JSON z numerem linii, kolumny i fragmentem w miejscu błędu - Zobacz generator

    Kodowanie Base64

    Gdy XML albo JSON trzeba przesłać w polu tekstowym albo w adresie data: - Zobacz generator

    Generator SHA-256

    Suma kontrolna dokumentu przed wysłaniem i po odebraniu - Zobacz generator

    Generator MD5

    Szybkie porównanie, czy dwa pliki są identyczne - Zobacz generator

    Generator UUID/GUID

    Identyfikatory rekordów do danych przykładowych - Zobacz generator

    Generator Slugów URL

    Nazwa bez spacji i polskich znaków, także do kluczy - Zobacz generator

    Generator zweryfikowany przez zespół LiczGrupa.pl

    Treść, wzory i wyniki zostały sprawdzone pod kątem poprawności i aktualności przez nasz zespół specjalistów.

    Krystian Szyszka

    Sprawdził: Krystian Szyszka