Vai al contenuto
jsonbeautifiers
Italiano

JSON in XML

XML ben formato con la radice che scegli, attributi ed escape corretto.

JSON
XML

Nulla di ciò che incolli lascia il tuo browser. L’allowlist connect-src ne fa una garanzia del browser anziché una promessa. Verificalo tu stesso

Converti JSON in XML ben formato, con l’elemento radice che scegli tu, supporto agli attributi ed escape corretto.

I due modelli di dati non combaciano del tutto, quindi questa conversione fa delle scelte. Sono elencate qui e vengono segnalate nelle note di output quando riguardano il tuo documento.

Come funziona la corrispondenza

Le chiavi degli oggetti diventano elementi
Una chiave "name" diventa un elemento <name>.
Una chiave con prefisso @ diventa un attributo
{"@id": "1"} diventa id="1" sull’elemento che la contiene.
Una chiave #text diventa il testo dell’elemento
È così che si ottiene un elemento con attributi e contenuto insieme.
Gli array ripetono l’elemento
È così che XML esprime una lista. Non c’è un elemento contenitore separato, a meno che tu non lo costruisca.
null diventa xsi:nil
La convenzione di XML Schema. Un elemento vuoto sarebbe indistinguibile da una stringa vuota.

Nomi di chiave che non sono nomi XML validi

I nomi degli elementi XML non possono iniziare con una cifra né contenere spazi o gran parte della punteggiatura. Le chiavi JSON fanno regolarmente entrambe le cose. Quelle chiavi vengono riscritte con trattini bassi, e la conversione te lo dice invece di farlo in silenzio, perché tornare indietro non ripristinerà i nomi originali.

Che cosa ha XML che JSON non ha

Namespace, istruzioni di elaborazione, un linguaggio di schema che precede JSON Schema di un decennio, commenti, e una distinzione tra attributi ed elementi figli. Niente di tutto ciò sopravvive a un giro attraverso JSON, quindi una conversione da JSON a XML produce XML valido ma strutturalmente più semplice di quello scritto a mano.

How to do this in code

Convertire nel codice.

py Python
import json
from dicttoxml import dicttoxml

xml = dicttoxml(json.loads(text), custom_root='root', attr_type=False)

# attr_type=False turns off the type="str" attributes dicttoxml
# adds to every element by default.
js JavaScript
import { XMLBuilder } from 'fast-xml-parser';

const builder = new XMLBuilder({
  format: true,
  attributeNamePrefix: '@',
  ignoreAttributes: false,
});
const xml = builder.build(JSON.parse(text));
cs C#
using Newtonsoft.Json;

XNode node = JsonConvert.DeserializeXNode(json, "root");
var xml = node.ToString();

Domande frequenti

Perché c’è un attributo xsi:nil?
Perché XML non ha null. La convenzione di XML Schema marca un elemento come nil con quell’attributo, così null resta distinguibile da una stringa vuota. Un <field/> vuoto potrebbe essere l’uno o l’altra.
Posso fare andata e ritorno da JSON a XML?
Per i documenti che restano dentro questa corrispondenza, sì. I nomi di chiave che è stato necessario riscrivere non torneranno, e nemmeno la distinzione tra un array di un elemento e un valore singolo, dato che entrambi producono un solo elemento.