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 qui come byte esadecimali 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. Incolla o digita i tuoi dati e il risultato apparirà man mano che scrivi, in un editor di codice con evidenziazione della sintassi, pronto da copiare. Il pulsante di scambio inverte la conversione e imposta il risultato come 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.

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 }
  ]
}

diventa questo YAML:

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

questo CSV, con una riga per utente:

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

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, quindi gli strumenti lo leggono e lo scrivono come byte esadecimali: {"a": 1} diventa 81 A1 61 01. L’input può contenere spazi, virgole e il prefisso 0x prima di ogni byte. 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.