XML in JSON

XML e JSON modellano i dati in modo diverso: XML ha attributi e contenuto misto, JSON ha oggetti e array. Convertire senza perdita richiede una convenzione. Questo strumento offre tre opzioni: compatto (elimina gli attributi), Badgerfish (attributi sotto @key, testo sotto $) e letterale (ogni nodo XML diventa un oggetto JSON con piena fedeltà). Scegli quello che corrisponde al consumatore JSON a cui ti stai rivolgendo.

Come convertire XML in JSON

  1. 1

    Incolla XML

    Qualsiasi XML ben formato. Gli spazi dei nomi sono preservati.

  2. 2

    Scegli lo stile di conversione

    Compatto, Badgerfish o letterale/senza perdita.

  3. 3

    Gestisci gli array

    Forza determinati elementi a essere sempre array (configurabile).

  4. 4

    Copia l'output JSON

    Formattato o minimizzato, a tua scelta.

I tre stili a confronto

Input:

<book id="1" lang="en">
  <title>1984</title>
  <author>Orwell</author>
</book>

Compatto (elimina gli attributi):

{
  "book": {
    "title": "1984",
    "author": "Orwell"
  }
}

Badgerfish (attributi sotto @, testo sotto $):

{
  "book": {
    "@id": "1",
    "@lang": "en",
    "title": { "$": "1984" },
    "author": { "$": "Orwell" }
  }
}

Letterale / JsonML-ish (piena fedeltà):

{
  "book": {
    "@attributes": { "id": "1", "lang": "en" },
    "title": "1984",
    "author": "Orwell"
  }
}

Array forzati

XML non ha modo di dire “questa è una lista di uno”. Una sequenza a singolo elemento appare identica a uno scalare:

<items>
  <item>A</item>
</items>

Questo può serializzarsi come {"item": "A"} o {"item": ["A"]}. Il convertitore ti consente di contrassegnare i nomi degli elementi (tramite XPath) come sempre-array, in modo che il tuo consumatore JSON a valle ottenga tipi coerenti.

Contenuto misto

Il contenuto misto, testo intercalato con elementi figli, è l’unico posto in cui qualsiasi conversione da XML a JSON perde informazioni:

<p>Ciao <em>mondo</em>!</p>

La maggior parte degli stili elimina il testo o lo comprime. Lo stile letterale preserva l’ordine tramite un array:

{
  "p": {
    "@content": ["Ciao ", { "em": "mondo" }, "!"]
  }
}

Inferenza di tipo

Per impostazione predefinita, i valori sono stringhe. Attiva “analizza numerico/booleano” e il convertitore convertirà 42, 3.14, true, false nei tipi JSON corrispondenti. Fai attenzione: un attributo XML id="007" diventa 7 con la conversione attivata, cosa che probabilmente non desideri.

Quando scegliere quale

  • Compatto: per JSON leggibile dall’uomo dove gli attributi sono rumore.
  • Badgerfish: quando hai bisogno di attributi e testo alla stessa profondità dei figli.
  • Letterale: quando devi tornare a XML senza perdita.

Domande frequenti

Quando un elemento appare una sola volta, il convertitore predefinisce come oggetto; due o più, come array. Usa l’opzione forzare-array per renderlo coerente se il tuo consumatore si aspetta una forma.

I prefissi degli spazi dei nomi sono preservati nelle chiavi (ns:title) a meno che tu non attivi “rimuovi spazi dei nomi”. Le dichiarazioni stesse diventano attributi @xmlns:ns sull’elemento radice.

La modalità letterale è la più vicina a senza perdita, ma l’ordinamento del contenuto misto tra elementi e testo è complicato. La modalità compatta perde sicuramente gli attributi. Badgerfish è un compromesso pragmatico.

No. La conversione avviene nel tuo browser.

Strumenti correlati

Strumento disponibile in altre lingue