Conversione JSON ⇄ XML
JSON ⇄ XML
Converte fra JSON e XML con un trattamento configurabile di attributi, array e nodi di testo.
Converte XML in JSON e viceversa. Fra i due non esiste una corrispondenza canonica — XML ha attributi, contenuto misto ordinato e namespace, JSON non ha niente di tutto questo — quindi questa pagina rende esplicite le proprie scelte e permette di cambiarle invece di nascondere una convenzione.
Un attributo diventa `@id`.
Dove finisce il testo proprio di un elemento.
XML
JSON
@name e il testo proprio di un elemento finisce in #text, mentre fratelli con lo stesso nome diventano un array. È l’ultimo punto quello in cui l’andata e ritorno può perdere informazione: un elenco che per caso ha un solo elemento torna indietro come un singolo oggetto, a meno che «usa sempre gli array» non sia attivo.Ingresso
215 caratteri
Uscita
399 caratteri
Come si usa
Scegliere la direzione
I due lati tengono input separati, così passare avanti e indietro non fa perdere quello che si era incollato.
Impostare il prefisso degli attributi e la chiave del testo
`@` e `#text` sono la convenzione diffusa (fast-xml-parser, xml2js e altri li usano), ma se il JSON che si deve produrre ne usa altri, si cambiano qui invece di rielaborare l’uscita.
Accendere «sempre array» se il JSON va nel codice
È la parte della corrispondenza che perde qualcosa: un `<item>` diventa un oggetto, due diventano un array, e il codice che consuma deve gestire entrambi i casi. Forzare gli array rende la forma stabile al prezzo di un po’ di verbosità.
Domande frequenti
Il giro completo mi restituisce il mio XML?
Strutturalmente di solito sì, byte per byte no. I commenti, le processing instruction e la distinzione fra `<a/>` e `<a></a>` non sopravvivono, e il contenuto misto — testo ed elementi alternati — non si può rappresentare in JSON in un modo che ne conservi l’ordine.
Perché `12` è una stringa?
Perché XML non ha tipi: ogni valore in un documento è testo, e solo uno schema dice il contrario. L’interruttore Deduci i tipi tenta di indovinare numeri e booleani, ma è appunto un’ipotesi: un codice prodotto `0123` diventa 123, e una stringa di versione `1.10` diventa 1.1.
Che cosa succede ai namespace?
I prefissi restano parte del nome dell’elemento — `soap:Body` diventa la chiave `soap:Body` — e le dichiarazioni `xmlns` passano come attributi ordinari. Niente viene risolto in un URI di namespace, quindi due documenti che usano prefissi diversi per lo stesso namespace producono JSON diversi.
Si può dargli in pasto una risposta SOAP?
Sì, ed è uno dei motivi comuni per essere qui. La busta, il corpo e il payload arrivano tutti come oggetti annidati; le chiavi `@` sono dove finiscono gli attributi SOAP.
Può ricevere da
Formattatore e validatore XML
XML Formatter & Validator
Indenta l’XML e riporta riga e colonna del primo punto in cui la struttura non è ben formata.
Banco di prova per XPath
XPath Tester
Valuta un’espressione XPath o un selettore CSS su XML o HTML ed elenca ogni nodo corrispondente.
Formattatore e validatore JSON
JSON Formatter & Validator
Formatta, minifica e valida il JSON, indicando riga e colonna esatte di un errore di sintassi.
Formattatore e validatore YAML
YAML Formatter & Validator
Riporta il YAML a un’indentazione coerente, lo valida e segnala gli errori di tabulazione e di ancora che rompono i parser.
Dopo
Questi accettano ciò che produce questo strumento, così il risultato può passare direttamente.
Formattatore e validatore JSON
JSON Formatter & Validator
Formatta, minifica e valida il JSON, indicando riga e colonna esatte di un errore di sintassi.
Banco di prova per JSONPath
JSONPath Tester
Esegue un’espressione JSONPath su un documento ed evidenzia i nodi corrispondenti mentre scrivi.
Formattatore e validatore XML
XML Formatter & Validator
Indenta l’XML e riporta riga e colonna del primo punto in cui la struttura non è ben formata.
Banco di prova per XPath
XPath Tester
Valuta un’espressione XPath o un selettore CSS su XML o HTML ed elenca ogni nodo corrispondente.
Codificatore e decodificatore Base64
Base64 Encoder & Decoder
Codifica e decodifica in Base64 e Base64URL testo o file, trattando correttamente l’UTF-8.
Da curl a codice
curl to Code
Converte un comando curl in fetch, axios, requests di Python, Go, PHP o PowerShell.