← Tutti gli strumenti

Convertitore JSON in XML

Converti JSON in XML e XML in JSON all'istante nel browser. Solo locale e privato, con note su attributi, array, namespace e insidie comuni.

JSON in XML e viceversa: un convertitore pratico per due mondi di dati

La maggior parte degli sviluppatori lavora con XML e JSON che lo voglia o no. Le moderne API web parlano quasi esclusivamente JSON, ma nel momento in cui si tocca una banca, un'assicurazione, un endpoint governativo, un ERP aziendale o un vecchio servizio SOAP, XML ricompare. Il convertitore JSON in XML in questa pagina trasforma JSON in XML e XML di nuovo in JSON direttamente nel tuo browser, in modo che tu possa muoverti tra questi due formati senza copiare payload sensibili in un servizio remoto.

Graffe JSON luminose e annidate che si trasformano in un albero di tag XML parentesizzati su uno sfondo indaco scuro
Gli oggetti JSON e gli alberi di tag XML descrivono gli stessi dati con forme diverse.

Cosa sono davvero XML e JSON

XML (Extensible Markup Language) è un formato di markup basato su tag annidati, attributi e namespace. È stato progettato per lo scambio di documenti e dati strutturati, e porta con sé molto macchinario: schemi (XSD), namespace, istruzioni di elaborazione, commenti, sezioni CDATA e una dichiarazione formale all'inizio. Quella ricchezza è il motivo per cui XML domina ancora nei sistemi legacy e aziendali. Lo trovi nei web service SOAP, nei feed RSS e Atom, nei file di configurazione (Spring, Maven, configurazioni app .NET), nei formati di documenti Office e negli standard di messaggistica finanziaria come SWIFT e ISO 20022, dove banche e assicuratori continuano a scambiarsi XML ogni giorno.

JSON (JavaScript Object Notation) è molto più semplice: oggetti con coppie chiave/valore, array, stringhe, numeri, booleani e null. Si mappa quasi uno a uno sulle strutture dati di quasi ogni linguaggio di programmazione, il che è esattamente il motivo per cui ha conquistato le moderne API web, gli endpoint REST, le app mobile e i file di configurazione come package.json. JSON è tipicamente dal 30 al 50 percento più piccolo dell'XML equivalente e viene analizzato notevolmente più velocemente, in parte perché elimina i tag di chiusura e il macchinario degli attributi che rendono XML prolisso.

Le differenze chiave che contano per la conversione

I due formati si sovrappongono abbastanza da mapparsi l'uno sull'altro, ma non in modo pulito. Alcune differenze strutturali causano quasi tutta la frizione:

  • Attributi contro nodi figlio. XML distingue tra <utente id="1"> (un attributo) e <utente><id>1</id></utente> (un elemento figlio). JSON non ha tale concetto, quindi i convertitori ne inventano uno. Per convenzione gli attributi vengono inseriti in una chiave come @attributes o prefissati con @, mentre il testo dell'elemento finisce in una chiave come #text.
  • Array. JSON ha array nativi. XML no. Una lista in XML è semplicemente lo stesso tag ripetuto, come tre elementi <articolo> di fila. I convertitori devono dedurre quando i fratelli ripetuti devono collassare in un array JSON e quando un singolo elemento deve rimanere un oggetto semplice.
  • Namespace. XML usa i namespace (i prefissi xmlns:soap) per evitare collisioni di nomi tra schemi. JSON non ha nulla di equivalente, quindi i prefissi sopravvivono come caratteri letterali nelle chiavi o vengono eliminati.
  • Verbosità e metadati. XML può allegare metadati a un nodo tramite attributi; JSON esprime tutto come chiavi e valori. Questo rende JSON più compatto e facile da leggere, mentre XML mantiene la potenza di validazione tramite schemi XSD.

Insidie di conversione da tenere d'occhio

Il classico errore è fare il round-trip da JSON a XML a JSON aspettandosi un risultato identico. La conversione è lossy in entrambe le direzioni a meno che non si controllino le regole. Tieni a mente questi punti:

  • Gli attributi vengono alterati. Quando converti JSON in XML, lo strumento ha bisogno di una regola per quali chiavi diventano attributi rispetto a elementi. Andando nell'altra direzione, gli attributi devono atterrare da qualche parte, e quel "da qualche parte" (prefisso @, blocco @attributes) differisce tra le librerie. Se un parser a valle si aspetta una convenzione diversa, i dati sembrano sbagliati anche se nulla è andato perso.
  • Elemento singolo contro array. Un feed XML con un solo <articolo> produce un oggetto JSON; lo stesso feed con due articoli produce un array JSON. Il codice che presuppone un array si rompe sul caso con un singolo elemento. Questa è una fonte comune di bug nel parsing di RSS e SOAP.
  • I namespace trapelano o scompaiono. A seconda dello strumento, soap:Body può diventare una chiave letteralmente denominata soap:Body, oppure il prefisso può essere eliminato del tutto, cambiando il significato del documento.
  • Contenuto misto e tipi. XML tratta tutto come testo, quindi un valore come true o 42 potrebbe rimanere una stringa dopo la conversione in JSON, mentre la direzione inversa non ha un posto nativo per commenti o CDATA.
Due alberi di dati strutturati collegati da nodi di markup astratti fatti di luce ciano e oro
Mappare tra formati significa decidere come si traducono attributi, array e namespace.

Perché la conversione solo locale è importante

I payload JSON e XML sono spesso la cosa più sensibile che uno sviluppatore gestisce: risposte API con token, messaggi SOAP con numeri di conto, file di configurazione con credenziali. Un convertitore che funziona nel tuo browser non carica mai nulla di tutto ciò. Il parsing e la serializzazione avvengono sulla tua macchina, nulla viene inviato a un server e puoi usare lo strumento offline una volta caricata la pagina. Per il debug dei dati di produzione o per qualsiasi cosa soggetta a un regime di conformità, questa è la differenza tra un controllo rapido e sicuro e una perdita accidentale di dati.

Se hai bisogno di rifinire il risultato in seguito, abbina questo ai nostri altri convertitori di dati, o riordina l'output con il formattatore JSON prima di passarlo al prossimo strumento nella tua pipeline.

Domande frequenti

Il convertitore carica il mio JSON o XML da qualche parte?

No. Sia la conversione da JSON a XML che quella da XML a JSON avvengono interamente nel tuo browser. I tuoi dati non lasciano mai il tuo dispositivo e lo strumento funziona offline dopo il caricamento della pagina.

Come vengono gestiti gli attributi XML quando si converte in JSON?

Gli attributi XML vengono inseriti in una chiave dedicata, comunemente prefissata con il simbolo chiocciola o raggruppata in un blocco attributi, poiché JSON non ha un concetto di attributo nativo. Il contenuto testuale dell'elemento viene archiviato separatamente in modo che entrambi sopravvivano alla conversione.

Perché il mio singolo elemento XML è diventato un oggetto invece di un array?

XML non ha array nativi, quindi una lista è solo un tag ripetuto. Quando è presente un solo elemento, i convertitori non riescono a distinguerlo da un normale oggetto, quindi diventa un oggetto. Due o più fratelli con lo stesso nome di tag collassano in un array JSON.

Cosa succede ai namespace XML come soap o xmlns?

JSON non ha equivalenti ai namespace XML. A seconda della conversione, il prefisso viene mantenuto come testo letterale all'interno della chiave o eliminato. Controlla l'output se il consumer a valle si basa sui prefissi di namespace.

Posso riconvertire JSON in XML e ottenere il documento originale?

Non sempre esattamente. La conversione è lossy in entrambe le direzioni perché le funzionalità XML come commenti, CDATA e la distinzione attributo contro elemento non hanno un corrispettivo JSON pulito. Il round-tripping funziona meglio quando si controllano le regole di denominazione su entrambi i lati.

Dove viene ancora usato XML rispetto a JSON?

XML vive nei sistemi legacy e aziendali: web service SOAP, feed RSS e Atom, file di configurazione e messaggistica finanziaria come SWIFT e ISO 20022. JSON domina nelle moderne API web, negli endpoint REST e nelle app mobile.