Non c e un unico modo corretto di trasformare JSON in XML. I due formati non modellano i dati allo stesso modo: XML ha attributi, contenuto misto e nessun tipo array nativo, nessuno dei quali JSON ha un equivalente. Questo strumento sceglie una mappatura e la dichiara nella pagina, invece di fingere che ne esista una naturale.
Utilizzo del convertitore JSON a XML
Scegli una direzione e, scrivendo XML, un nome per l elemento radice, perche JSON non ha nulla che nomi un documento come fa un elemento radice XML. Convertendo
{"items":[{"name":"A & B <co>"},{"name":"C"}],"note":null}
con la radice impostata su catalog produce:
<catalog>
<items>
<name>A & B <co></name>
</items>
<items>
<name>C</name>
</items>
<note/>
</catalog>
Un membro oggetto diventa un elemento figlio, un array diventa elementi
fratelli ripetuti che condividono la chiave dell array come nome, e i
caratteri che non sono legali nel testo XML, come & e <, vengono
escapati.
Attributi, testo e valori vuoti
Una chiave con prefisso @ diventa un attributo XML in scrittura, e una
chiave #text diventa testo accanto agli elementi figli. Ne @ ne #
e un carattere legale per iniziare il nome di un elemento XML, quindi una
chiave JSON non puo mai entrare in collisione con nessuna convenzione per
accidente.
null, un oggetto vuoto, un array vuoto e una stringa vuota diventano tutti
un elemento vuoto, perche XML ha esattamente una forma per nulla e non puo
distinguerli. Leggere <note/> al ritorno restituisce null per tutti e
quattro, cosa che la pagina dichiara chiaramente invece di lasciarti
scoprire.
Perche il lettore restituisce ogni valore come stringa
XML non registra alcuna informazione di tipo. Un numero in un documento XML e solo cifre per quanto riguarda il formato, e indovinare che dovrebbe diventare un numero JSON e esattamente il tipo di indovinello che trasforma un CAP in un intero senza il suo zero iniziale. La rilettura resta senza perdita rifiutando di indovinare.
Cosa significa un nome di elemento ripetuto al ritorno
Un nome di elemento ripetuto sotto lo stesso genitore diventa un array JSON al ritorno, e un nome membro che non e un nome legale di elemento XML ferma la conversione e nomina la chiave problematica, invece di modificarla silenziosamente in qualcosa che sembra un tag valido.