CodeKitHub
Strumenti JSON

Convertitore JSON ↔ XML

Ultimo aggiornamento:

Per convertire JSON in XML, ogni chiave diventa un tag di elemento e ogni valore diventa il suo contenuto testuale — gli oggetti annidati diventano elementi annidati, gli array diventano elementi fratelli ripetuti e gli attributi XML vengono mappati come chiavi `@_nome` nel JSON, così la conversione andata e ritorno non perde alcuna informazione. Questo strumento esegue questa conversione, in entrambe le direzioni, interamente nel tuo browser. Scegli una direzione, incolla i tuoi dati e ottieni un risultato correttamente annidato da copiare o scaricare.

Che cos'è questo strumento?

XML e JSON sono entrambi formati di dati ad albero, ma vengono usati in contesti diversi: le vecchie API aziendali, i servizi SOAP, i feed RSS/Atom e molti formati di configurazione parlano ancora XML, mentre le moderne API REST e il codice JavaScript usano quasi esclusivamente JSON. Questo strumento traduce tra i due formati, così non devi scrivere a mano né l'uno né l'altro quando integri sistemi vecchi e nuovi.

La conversione si basa direttamente sull'API DOMParser del browser per la lettura dell'XML, e segue la struttura definita dalla specifica W3C XML 1.0 per generarlo — quindi l'XML prodotto è ben formato e l'XML accettato viene interpretato esattamente come farebbe un browser o qualsiasi libreria XML conforme agli standard.

Poiché XML ha concetti che JSON non ha (attributi, contenuto misto testo/elementi, un unico elemento radice obbligatorio) e JSON ha concetti che XML non ha (array nativi, booleani, numeri), lo strumento adotta una convenzione documentata e ampiamente usata: un attributo XML `name="value"` diventa la chiave JSON `"@_name": "value"`, il contenuto testuale di un elemento diventa il valore stringa diretto dell'elemento (quando non ha figli né attributi) oppure una chiave `"#text"` accanto agli eventuali attributi, e gli elementi fratelli ripetuti con lo stesso tag diventano un array JSON.

Perché usarlo?

  • Bidirezionale — converti JSON in XML o XML in JSON dalla stessa schermata.
  • Gestisce correttamente l'annidamento — gli oggetti JSON annidati diventano elementi XML annidati e viceversa, a qualsiasi profondità.
  • Gli array vengono mappati in elementi ripetuti — un array JSON sotto una chiave diventa altrettanti elementi XML fratelli con lo stesso tag, e i tag XML ripetuti tornano indietro come array JSON.
  • Gli attributi XML vengono preservati — usando la convenzione `@_nomeAttributo`, così i dati degli attributi non vengono persi silenziosamente.
  • Copia negli appunti o scarica come file .json o .xml.
  • 100% lato client — nulla di ciò che incolli viene caricato da nessuna parte.

Come si usa

  1. Scegli una direzione: "XML → JSON" o "JSON → XML".
  2. Incolla i tuoi dati nella casella di input.
  3. Clicca su "Converti".
  4. Controlla il risultato, poi copialo oppure clicca su "Scarica" per salvare un file.

Esempio

Input

{"user":{"name":"Alice","age":30}}

Risultato

<?xml version="1.0" encoding="UTF-8"?>
<user>
  <name>Alice</name>
  <age>30</age>
</user>

L'unica chiave di primo livello del JSON ("user") diventa l'elemento radice XML; se il JSON ha più di una chiave di primo livello, lo strumento racchiude tutto in un elemento <root>, perché XML richiede esattamente un elemento radice.

Consigli pratici

  • Migrare una vecchia configurazione XML (come il file di impostazioni di una vecchia app) verso un sistema moderno basato su JSON: incolla l'XML, converti e regola i nomi dei campi secondo necessità.
  • Testare un endpoint SOAP o XML-RPC da JavaScript: converti qui il payload JSON della richiesta in XML prima di inviarlo, oppure converti una risposta XML in JSON per ispezionarla facilmente.
  • Se il tuo JSON usa array per dati che in XML sarebbero rappresentati come elementi ripetuti, assicurati prima di annidare l'array sotto una singola chiave (ad es. {"items":{"item":[1,2,3]}}) invece di usare un array nudo di primo livello, perché XML non può avere più elementi radice.

Perché conta la convenzione dell'attributo @_

La parte più delicata della conversione JSON/XML è che gli elementi XML possono contenere contemporaneamente due tipi di dati — attributi e contenuto figlio — mentre un semplice oggetto JSON ha solo chiavi e valori. Senza una convenzione per tenerli separati, un convertitore ingenuo perderebbe del tutto gli attributi oppure li mescolerebbe con gli elementi figli in un modo che non può essere riconvertito in modo affidabile. La convenzione del prefisso `@_nome` (adottata anche da librerie ampiamente usate nell'ecosistema JavaScript) risolve questo problema dando agli attributi una forma di chiave distinta e non ambigua, così `<product id="42">Widget</product>` va e torna in modo pulito come `{"product":{"@_id":"42","#text":"Widget"}}`, senza perdere l'id né indovinare a caso quale valore corrisponda a cosa.

Domande frequenti

Cosa succede a un JSON con più di una chiave di primo livello?

XML richiede un singolo elemento radice, quindi se il tuo oggetto JSON ha più chiavi di primo livello (ad es. {"a":1,"b":2}), l'output viene racchiuso in un elemento <root>: <root><a>1</a><b>2</b></root>. Se il JSON ha esattamente una chiave di primo livello, quella chiave diventa direttamente il nome dell'elemento radice.

Come vengono rappresentati gli attributi XML in JSON?

Un attributo come <user id="7"> diventa la chiave "@_id": "7" nell'oggetto JSON risultante. È una convenzione comune e documentata (usata da librerie come fast-xml-parser) che mantiene gli attributi distinguibili dagli elementi figli.

Gli elementi XML ripetuti diventano un array JSON?

Sì. Se un elemento ha più figli con lo stesso nome di tag, ad es. <items><item>1</item><item>2</item></items>, la conversione in JSON produce {"items":{"item":["1","2"]}}. Riconvertendo quel JSON in XML si riproducono gli elementi <item> ripetuti.

Numeri e booleani vengono preservati convertendo da XML a JSON?

XML non ha un concetto nativo di numeri o booleani — è tutto testo — quindi il contenuto testuale arriva come stringa JSON (ad es. "30" invece di 30). Se hai bisogno di tipi numerici, dovrai convertire quei campi in un secondo momento.

I miei dati vengono caricati da qualche parte?

No. L'analisi e la conversione avvengono interamente in JavaScript nel tuo browser, usando l'API DOMParser integrata — nulla viene inviato a un server, quindi è sicuro usarlo con file di configurazione privati o payload di API interne.

Strumenti correlati