Formátování kódu / Návody

Převod JSON a XML: co se zachová při zpětné cestě?

JSON a XML mohou nést podobné záznamy, ale hodnoty uspořádávají odlišně. Výsledek závisí na pravidlech mapování.

Dvě struktury, ne dva zápisy

JSON zná objekty, pole, řetězce, čísla, logické hodnoty a null. XML má pojmenované prvky, atributy, textové uzly a uspořádaný strom dokumentu. Neexistuje obecné bezztrátové pravidlo pro převod libovolného JSON na libovolné XML. Převodník musí rozhodnout o kořeni, atributech a opakovaných potomcích. MultiVerto očekává objekt JSON s jediným klíčem jako kořen dokumentu XML. Název klíče se stane názvem prvku. Zvláštní objekt @attributes drží atributy a pole vytvářejí opakované prvky. Jde o dohody tohoto nástroje, nikoli názvy stanovené standardem XML. Před použitím na skutečná data si proto ujasněte cílové schéma.

Sledujte záznam objednávky

Ve vloženém příkladu má order objekt @attributes s id jako textem 7, pole item s hodnotami pen a book a count jako číslo 2. Nástroj JSON na XML vytvoří kořen order, atribut id, dva prvky item a prvek count. Opačný nástroj umí tento jednoduchý dokument přečíst. Opakované item seskupí do pole a atribut uloží pod @attributes. Obsah prvku však čte jako text: count, který začal jako číslo JSON 2, se vrátí jako řetězec 2. Zobrazená číslice je stejná, ale datový typ nikoli. Porovnávejte zpracované struktury dat, ne pouze vizuální výstup.

Záznam se převede, ale číselný typ se při návratu změní.
  1. JSON: count je číslo 2; item je pole
  2. XML: count je text; dva prvky item
  3. Zpět do JSON: count je text 2; zkontrolovat schéma

Kde se mění informace

Atribut a potomek jsou v XML různé věci; objekt JSON používá klíče, pokud mapování některé nevyhradí. Opakované prvky se mohou změnit na pole, ale jediný výskyt se může vrátit jako jednoduchá hodnota a překvapit program, který vždy očekává pole. Hodnoty null, číselná přesnost a logické hodnoty potřebují výslovná pravidla schématu, protože samotný text XML typ neprozradí. Na pořadí prvků může příjemci XML záležet, i když aplikace pořadí klíčů JSON ignoruje. MultiVerto záměrně odmítá XML s významovým textem smíšeným s vnořenými prvky a nepodporuje všechny konstrukce XML.

Nejprve navrhněte mapování

Při propojování služeb získejte vzorový dokument a schéma příjemce. Rozhodněte, zda má být položka atributem nebo prvkem a jak budou vypadat pole. Určete význam čísla, logické hodnoty, prázdného textu a chybějící položky. Je-li zdrojem XML, zkontrolujte jmenné prostory a smíšený obsah; jednoduchý převodník nemusí stačit a může být potřeba specializovaný parser. U zdroje JSON musí mít kořen jediný pojmenovaný objekt a klíče musí být platnými názvy prvků pro tento nástroj. Malý reprezentativní příklad převeďte v obou směrech a vyzkoušejte také ve skutečném cílovém systému.

Zkontrolujte návrat s cílem

Zkopírujte ukázkový výstup do propojeného převodníku XML na JSON a porovnejte obnovená data s původním JSON. Sledujte typy, opakování, umístění atributů a prázdné hodnoty. Nechte v poli item jen jeden prvek a ověřte, zda další aplikace stále očekává pole. Úvodní nulu u count zkoušejte jen tehdy, pokud ji dovoluje schéma; text a číslo mají rozdílný význam. Originál uchovejte spolu s převedeným souborem. Formátování XML usnadní kontrolu vnoření, ale neopraví nesprávné mapování. Úspěšné parsování dokazuje přijatelnou syntaxi, nikoli obchodní význam vyžadovaný druhým systémem.

Vyzkoušet převodník

Převeďte objednávku do XML a vyzkoušejte opačné mapování.

Změňte objekt JSON s jedním kořenem na elementy XML.

Otevřít celý převodník

Další návody

Návody ke konverzím

Prohlédnout návody