100 % locale — i tuoi dati non lasciano mai il tuo browser

XML in JSON — attributi compresi

Converti XML in JSON. Attributi, elementi ripetuti e testo finiscono tutti dove un punto o una parentesi quadra basta a raggiungerli dal codice.

Istantaneo Privato Zero cookie
Indentazione
Inverti: JSON → XML

Input XML

Output JSON

Che cosa fa questo strumento

Ogni elemento diventa una chiave; i suoi figli diventano il valore.

<user id="1"><name>Ada</name></user>
{ "user": { "name": "Ada", "@_id": "1" } }

Tre punti in cui i modelli divergono

XML e JSON non descrivono le stesse forme, e ogni convertitore deve scegliere. Queste sono le scelte.

Gli attributi

Diventano chiavi con prefisso @_. JSON ha un solo tipo di membro; XML ha attributi ed elementi, che possono avere lo stesso nome — <user id="1"><id>2</id></user> contiene due cose diverse chiamate id. Il prefisso le tiene distinte. Un interruttore scarta gli attributi se non ti servono.

Quando un elemento porta insieme testo e attributi, il testo finisce sotto #text.

La ripetizione

Un <item> dà un oggetto. Due danno un array.

<r><i>1</i></r>          →  { "r": { "i": 1 } }
<r><i>1</i><i>2</i></r>  →  { "r": { "i": [1, 2] } }

Non è un difetto correggibile: nulla in un documento XML dice se un elemento è ripetibile. Solo uno schema lo sa. Se il tuo codice si aspetta una lista, normalizzala all’arrivo.

Il contenuto misto

Questo JSON semplicemente non sa esprimerlo, ed è meglio dirlo senza giri di parole.

<p>Ciao <b>mondo</b> ancora</p>

JSON non ha modo di dire che Ciao precedeva <b> e ancora lo seguiva. I frammenti di testo vengono raccolti sotto #text e la loro posizione rispetto agli elementi va perduta, insieme alla spaziatura tra loro. Se ciò che conta è il testo — un documento più che un record — non convertire: usa il formattatore XML.

I tipi

<a>1</a> dà il numero 1. <a>007</a> dà la stringa "007", perché uno zero iniziale di solito è un CAP o un numero di conto, e leggerlo come sette lo perde. Anche un identificatore di venti cifre resta una stringa: un numero JSON lo arrotonderebbe.

Che cosa non è un dato

La dichiarazione XML e ogni istruzione di elaborazione vengono scartate. Descrivono il documento, non il suo contenuto — una chiave ?xml accanto al tuo elemento radice non è mai stata un’informazione che avevi chiesto.

Privato per progettazione

Tutto viene eseguito localmente nel browser con JavaScript. I tuoi dati non vengono mai caricati, quindi lo strumento è sicuro per contenuti sensibili e funziona anche offline.

Domande frequenti

Perché il mio unico <item> è diventato un oggetto e non un array?
Perché nulla in un documento XML dice se un elemento si ripete. Un `<item>` è identico a una lista di uno, e solo uno schema conosce la differenza. Da due in su è un array; con uno è un oggetto. Se il tuo consumatore vuole una lista in entrambi i casi, normalizzala lì — `Array.isArray(x) ? x : [x]` è la riga di sempre.
Perché gli attributi hanno il prefisso @_?
Perché JSON ha un solo tipo di membro e XML ne ha due. `<user id="1"><id>2</id></user>` contiene un attributo e un elemento entrambi chiamati `id` che non sono la stessa cosa; senza prefisso uno sovrascriverebbe l’altro. L’interruttore elimina del tutto gli attributi se preferisci non vederli.
Perché <a>007</a> resta una stringa mentre <a>7</a> diventa un numero?
Perché lo zero iniziale quasi sempre porta significato: un CAP, un numero di conto, un codice ricambio. Leggere `007` come il numero sette lo perde per sempre. Un numero senza zeri iniziali viene convertito; ciò che un numero JSON non regge esattamente, come un identificatore di venti cifre, resta una stringa per lo stesso motivo.

Convertitori correlati