Formátovanie kódu / Návody

Prevod JSON a XML: čo sa zachová pri spätnej ceste?

JSON a XML môžu niesť podobné záznamy, ale hodnoty usporadúvajú odlišne. Výsledok závisí od pravidiel mapovania.

Dve štruktúry, nie dva zápisy

JSON pozná objekty, polia, reťazce, čísla, logické hodnoty a null. XML má pomenované prvky, atribúty, textové uzly a usporiadaný strom dokumentu. Neexistuje všeobecné bezstratové pravidlo pre prevod ľubovoľného JSON na ľubovoľné XML. Konvertor musí rozhodnúť o koreni, atribútoch a opakovaných potomkoch. MultiVerto očakáva objekt JSON s jediným kľúčom ako koreň XML dokumentu. Názov kľúča sa stane názvom prvku. Osobitný objekt @attributes drží atribúty a polia vytvárajú opakované prvky. Sú to dohody tohto nástroja, nie názvy ustanovené štandardom XML. Pred použitím na skutočné dáta si preto ujasnite cieľovú schému.

Sledujte záznam objednávky

Vo vloženom príklade má order objekt @attributes s id ako textom 7, pole item s hodnotami pen a book a count ako číslo 2. Nástroj JSON na XML vytvorí koreň order, atribút id, dva prvky item a prvok count. Opačný nástroj vie tento jednoduchý dokument prečítať. Opakované item zoskupí do poľa a atribút uloží pod @attributes. Obsah prvku však číta ako text: count, ktorý začal ako číslo JSON 2, sa vráti ako reťazec 2. Zobrazená číslica je rovnaká, ale dátový typ nie. Porovnávajte naparsované štruktúry údajov, nie iba vizuálny výstup.

Záznam sa prevedie, no číselný typ sa pri návrate zmení.
  1. JSON: count je číslo 2; item je pole
  2. XML: count je text; dva prvky item
  3. Späť do JSON: count je text 2; skontrolovať schému

Kde sa mení informácia

Atribút a potomok sú v XML rôzne veci; objekt JSON používa kľúče, pokiaľ mapovanie niektoré nevyhradí. Opakované prvky sa môžu zmeniť na pole, ale jediný výskyt sa môže vrátiť ako jednoduchá hodnota a prekvapiť program, ktorý vždy očakáva pole. Hodnoty null, číselná presnosť a logické hodnoty potrebujú výslovné pravidlá schémy, pretože samotný text XML typ neprezradí. Na poradí prvkov môže XML príjemcovi záležať, aj keď aplikácia poradie kľúčov JSON ignoruje. MultiVerto zámerne odmieta XML s významovým textom zmiešaným s vnorenými prvkami a nepodporuje všetky konštrukcie XML.

Najprv navrhnite mapovanie

Pri prepájaní služieb získajte vzorový dokument a schému príjemcu. Rozhodnite, či má byť položka atribútom alebo prvkom a ako budú vyzerať polia. Určte význam čísla, logickej hodnoty, prázdneho textu a chýbajúcej položky. Ak je zdrojom XML, skontrolujte menné priestory a zmiešaný obsah; jednoduchý konvertor nemusí stačiť a môže byť potrebný špecializovaný parser. Pri zdroji JSON musí mať koreň jediný pomenovaný objekt a kľúče musia byť platnými názvami prvkov pre tento nástroj. Malý reprezentatívny príklad preveďte oboma smermi a vyskúšajte aj v skutočnom cieľovom systéme.

Skontrolujte návrat s cieľom

Skopírujte ukážkový výstup do prepojeného konvertora XML na JSON a porovnajte obnovené údaje s pôvodným JSON. Sledujte typy, opakovania, umiestnenie atribútov a prázdne hodnoty. Nechajte v poli item len jeden prvok a overte, či ďalšia aplikácia stále očakáva pole. Úvodnú nulu pri count skúšajte iba vtedy, ak ju dovoľuje schéma; text a číslo majú rozdielny význam. Originál uchovajte spolu s prevedeným súborom. Formátovanie XML uľahčí kontrolu vnorenia, ale neopraví nesprávne mapovanie. Úspešné parsovanie dokazuje prijateľnú syntax, nie obchodný význam požadovaný druhým systémom.

Vyskúšať konvertor

Preveďte objednávku do XML a vyskúšajte opačné mapovanie.

Zmeňte objekt JSON s jedným koreňom na elementy XML.

Otvoriť celý konvertor

Ďalšie návody

Návody na konverzie

Prezrieť návody