Cosa sono questi formati di dati?

I programmi archiviano e scambiano dati strutturati, come impostazioni, record ed elenchi, in formati di testo che li rappresentano ciascuno a modo proprio. Un convertitore è utile quando un programma fornisce dati in un formato che un altro non riesce a leggere, oppure quando un formato è più facile da leggere o modificare per il lavoro da svolgere.

Formato Come rappresenta i dati Dove si trova
JSON Oggetti tra parentesi graffe, elenchi tra parentesi quadre, testo tra virgolette doppie API Web e impostazioni delle app
YAML Righe key: value con rientro, elementi degli elenchi che iniziano con - Docker Compose, Kubernetes e file di pipeline CI
XML Elementi racchiusi in tag, che possono avere attributi Documenti, feed RSS e servizi Web SOAP
TOML Righe key = value sotto intestazioni [table] File di configurazione come Cargo.toml e pyproject.toml
TOON Righe con rientro, con elenchi di record disposti in righe sotto i rispettivi campi Dati strutturati inviati ai modelli linguistici di IA
CSV Una riga di intestazione, seguita da una riga per record; i valori sono separati da virgole Fogli di calcolo ed esportazioni di database
TSV Come CSV, ma con tabulazioni tra i valori Celle copiate da un foglio di calcolo
MessagePack Dati binari, rappresentati come byte esadecimali nella scheda Testo Messaggi compatti tra programmi
JSON5 JSON che consente anche commenti, virgolette singole e chiavi senza virgolette File di configurazione scritti a mano
JSONL Un valore JSON per riga, detto anche JSON Lines o NDJSON Log e insiemi di dati
INI Righe key = value sotto intestazioni [section] File delle impostazioni dei programmi, come php.ini
Properties Righe key = value con chiavi separate da punti App Java, come i file application.properties di Spring Boot

Descrizione dello strumento

Questo strumento converte i dati tra questi 12 formati: JSON, YAML, XML, TOML, TOON, CSV, TSV, MessagePack, JSON5, JSONL, INI e Java properties. Tutti i convertitori di formati di dati qui funzionano allo stesso modo, dal Convertitore generale di formati di dati a quelli dedicati a una singola coppia, come da JSON a YAML, da CSV a JSON o da XML a JSON: si avviano con i formati indicati nel nome, mentre i menu Sorgente e Destinazione permettono di scegliere qualsiasi altro formato.

I convertitori accettano dati come testo che incolli o digiti, oppure come file, e restituiscono testo o file. Scegli quale con le schede File e Testo in alto, sul lato sorgente e sul lato destinazione. Entrambi i lati partono da Testo.

  • Testo in ingresso: incolla o digita i tuoi dati, che vengono convertiti man mano che scrivi.
  • File in ingresso: scegli o trascina uno o più file. Il pulsante Sfoglia file mostra solo i file nel formato sorgente, ma i file trascinati possono essere in uno qualsiasi dei 12 formati, e ognuno viene convertito dal formato indicato dalla sua estensione, quindi un file .yaml viene convertito come YAML anche nel convertitore da JSON a XML. Un file trascinato con un’altra estensione, come .txt, viene convertito dal formato sorgente. Vengono letti anche i file in UTF-16 o in una vecchia codifica, come Windows-1252.
  • Testo in uscita: il risultato appare in un editor di codice con evidenziazione della sintassi, pronto da copiare. Quando vengono convertiti più file, il menu File sopra l’editor sceglie il file mostrato.
  • File in uscita: i file convertiti compaiono in una griglia, ognuno con il proprio pulsante Scarica, e mantengono il nome con la nuova estensione. Il pulsante Scarica tutto salva tutti i file convertiti in un unico file ZIP, oppure un singolo file convertito così com’è. I dati incollati danno un file chiamato converted, ad esempio converted.yaml. I file convertiti sono testo UTF-8, tranne i file MessagePack, che sono binari.

Il pulsante di scambio inverte la conversione: il formato di destinazione diventa quello sorgente, i due lati si scambiano le schede e il risultato diventa il nuovo input.

Se l’input non è valido nel formato sorgente, il messaggio di errore indica cosa non va, di solito specificando la riga e la colonna del problema. Con i file, il messaggio di errore indica i file la cui conversione non è riuscita, e la scheda Testo sul lato destinazione mostra i dettagli del file visualizzato.

I tuoi dati vengono convertiti nel browser e non vengono mai caricati.

Esempio

Questo JSON:

{
  "users": [
    { "id": 1, "name": "Ann", "admin": true },
    { "id": 2, "name": "Bo", "admin": false }
  ]
}
JSON

diventa questo YAML:

users:
  - id: 1
    name: Ann
    admin: true
  - id: 2
    name: Bo
    admin: false
YAML

questo CSV, con una riga per utente:

id,name,admin
1,Ann,true
2,Bo,false
CSV

e questo TOON:

users[2]{id,name,admin}:
  1,Ann,true
  2,Bo,false

Come si mappano i formati tra loro

I formati non possono contenere tutti gli stessi tipi di dati, quindi alcune conversioni seguono queste regole:

  • CSV e TSV rappresentano una tabella. La prima riga indica i nomi delle colonne e ogni riga successiva diventa un oggetto. Gli oggetti annidati diventano colonne i cui nomi corrispondono al percorso, mentre gli elenchi diventano testo JSON nelle rispettive celle; perciò {"name": "Ann", "address": {"city": "Oslo"}, "tags": ["a", "b"]} diventa le colonne name, address.city e tags. Nella conversione inversa, queste colonne tornano a essere oggetti annidati ed elenchi. Se i dati sono un oggetto che contiene un solo elenco, come {"users": [...]}, le righe corrispondono agli elementi dell’elenco, mentre un elenco di elenchi diventa un insieme di righe senza intestazione.
  • Valori di testo: CSV, TSV, XML, INI e properties contengono solo testo, quindi i convertitori trasformano true e false nei valori booleani true e false e i numeri scritti in forma semplice, come 42 o 3.5, in numeri. Valori come 007, 1.50 o 1e3 restano testo, così i codici postali e i numeri di versione mantengono esattamente la loro forma.
  • Gli attributi XML diventano chiavi che iniziano con @, mentre il testo di un elemento che ha attributi diventa #text: <price currency="USD">44.95</price> diventa {"@currency": "USD", "#text": 44.95}. Gli elementi ripetuti diventano un elenco. Nella conversione in XML, le chiavi che iniziano con @ tornano a essere attributi. Un oggetto con una sola chiave il cui valore non è un elenco diventa l’elemento radice. Gli altri dati vengono inseriti in un elemento <root>, con ogni elemento dell’elenco principale contenuto in un elemento <item>. I caratteri non ammessi nei nomi XML, come gli spazi, diventano _.
  • TOML, INI e properties possono contenere solo valori con nome al livello superiore, quindi i dati rappresentati da un elenco vengono scritti sotto il nome items e un singolo valore sotto value. TOML non prevede null, quindi i valori null vengono omessi.
  • INI rappresenta gli oggetti annidati come sezioni, per esempio [server.ssl], gli elenchi di valori come righe key[] = value e gli elenchi di oggetti come sezioni denominate in base alla loro posizione, per esempio [users.0].
  • Le chiavi properties uniscono i nomi annidati usando punti e numerano gli elementi degli elenchi tra parentesi quadre, per esempio app.hosts[0], come fa Spring Boot. Quando vengono convertite in YAML o JSON, queste chiavi diventano oggetti annidati ed elenchi, quindi un file application.properties viene convertito nella struttura di un file application.yml. I caratteri al di fuori di Latin-1 vengono scritti come sequenze di escape \u.
  • I risultati YAML racchiudono tra virgolette il testo che i lettori YAML 1.1 interpreterebbero come qualcos’altro, per esempio on, yes o una data, in modo che i lettori YAML 1.1 e YAML 1.2 ottengano gli stessi dati. Un file YAML con più documenti separati da --- diventa un elenco di documenti e le chiavi di merge << vengono espanse.
  • MessagePack è binario. Come testo, gli strumenti lo leggono e lo scrivono come byte esadecimali: {"a": 1} diventa 81 A1 61 01, e l’input può contenere spazi, virgole e il prefisso 0x prima di ogni byte. I file MessagePack, scelti o salvati nella scheda File, contengono i byte veri e propri, quindi un file .msgpack convertito è binario. Più messaggi consecutivi diventano un elenco.
  • Nei risultati JSONL, ogni elemento dell’elenco è su una riga distinta.
  • I numeri interi troppo grandi per essere rappresentati dai numeri JavaScript, come gli ID a 64 bit, mantengono tutte le loro cifre.
  • Le date e gli orari TOML e i timestamp MessagePack diventano testo, per esempio 1979-05-27T07:32:00Z.

Suggerimenti

  • Per convertire celle da un foglio di calcolo, copiale e incollale come TSV: le app per fogli di calcolo copiano le celle come testo separato da tabulazioni.
  • CSV e TSV sono adatti ai dati costituiti da un elenco di record simili. Per i dati con molti livelli di annidamento, YAML, TOML o TOON sono più leggibili.
  • I commenti nei file YAML, XML, TOML, JSON5, INI e properties non vengono mantenuti, perché i convertitori trasferiscono solo i dati.