Cos'è la conversione da JSON a Excel e perché serve
Quando si lavora con dati provenienti da API, configurazioni o archivi NoSQL, il formato JSON (JavaScript Object Notation) è onnipresente. È strutturato, annidabile e tipizzato: può contenere oggetti, array, numeri, booleani e valori nulli. Tuttavia, chi deve analizzare questi dati o condividerli con colleghi che usano Excel si scontra con un problema: un foglio di calcolo è piatto, ogni cella contiene un singolo valore e non esiste un modo nativo per rappresentare gerarchie. La pagina json-to-excel risolve esattamente questo: carichi un file JSON e ottieni un file XLSX, con l’intera struttura appiattita in una tabella. Il punto chiave che la distingue da pagine simili (come quelle per CSV) è che JSON non è piatto, quindi la conversione richiede una regola di appiattimento – le chiavi nidificate vengono espanse con nomi a percorso puntato (ad esempio address.city). Inoltre, il formato di destinazione XLSX può conservare i tipi di dato nativi (numeri, booleani) mentre un CSV li ridurrebbe tutti a testo. La conversione avviene interamente lato client: il browser analizza il file e scrive l'output convertito localmente sul dispositivo; nessun file viene caricato su un server, preservando la privacy dei dati.
Differenze fondamentali tra JSON e foglio di calcolo
Un file JSON ben formato ha una grammatica precisa: oggetti racchiusi da {}, array da ``, coppie chiave-valore separate da virgole. I valori possono essere stringhe (tra virgolette doppie), numeri (interi o in virgola mobile), booleani (true/false), null, oppure oggetti o array annidati. Un foglio di calcolo XLSX, invece, è un archivio XML zippato (secondo lo standard Office Open XML) che organizza i dati in celle, righe e colonne, con un foglio di lavoro alla volta. Ogni cella può contenere un valore di un tipo specifico: numero (IEEE 754), stringa, booleano, data o errore. Non esistono oggetti annidati: tutto è piatto.
La conversione da JSON a Excel deve quindi risolvere due disparità:
- Gerarchia: un oggetto JSON può contenere sotto-oggetti e array; un foglio di lavoro li appiattisce.
- Tipi di dato: JSON ha tipi semplici che trovano corrispondenza diretta nei tipi di cella di XLSX, ma deve essere gestito
null(di solito si traduce in cella vuota).
Lo strumento applica una regola fissa: ogni oggetto in un array di oggetti diventa una riga; ogni chiave diventa una colonna. Per le chiavi annidate, usa il percorso con punti. Array di array vengono mantenuti come righe, senza introdurre intestazioni derivate dagli indici. Per esempio, l'input [["a","b"],["c","d"]] produrrà due righe e due colonne senza header.
Come funziona l’appiattimento della struttura JSON (dot‑path)
L’operazione chiave della pagina è l’appiattimento (flattening). Quando il JSON è un array di oggetti, il tool esamina ricorsivamente tutte le chiavi presenti nel primo oggetto e in tutti gli oggetti annidati, e costruisce un set di nomi di colonna unitari. Per ogni sotto-chiave, viene concatenata la chiave padre con un punto. Ad esempio, dato:
{
"nome": "Mario",
"indirizzo": {
"via": "Roma 10",
"città": "Torino"
}
}
Il risultato avrà due colonne: nome e indirizzo.via, indirizzo.città. Se un oggetto ha una chiave in più rispetto ad altri, quella colonna viene creata comunque e le celle mancanti rimangono vuote. L’array di oggetti può avere profondità variabile; tutte le possibili combinazioni di percorsi vengono rilevate.
Se il JSON contiene array annidati, il comportamento cambia. Un array di oggetti non può essere rappresentato completamente in una singola tabella piatta: ad esempio, un campo telefoni contenente ["011…", "012…"] non può essere espanso in più colonne fisse perché gli array possono avere lunghezze variabili. In questi casi, lo strumento converte l'array in una singola cella contenente la rappresentazione JSON dell'array stesso (ad esempio, `` come stringa). L'appiattimento ricorsivo di array di oggetti all'interno di oggetti non è supportato per le colonne; invece l'array annidato viene trattato come un valore scalare.
Piuttosto, possiamo spiegare il caso di array di array: se il JSON di primo livello è un array di array (ad esempio, [ [1, "x"], [2, "y"] ]), ogni array interno diventa una riga e non viene generata alcuna riga di intestazione. Il primo array interno è semplicemente la prima riga del foglio. Non avviene alcun appiattimento di array annidati perché non ci sono chiavi da concatenare. Un array di primo livello può anche mescolare oggetti con altri valori: qualsiasi elemento che non è un oggetto viene inserito in una colonna denominata value (gli array vi atterrano come testo JSON).
Regole e casi particolari (limiti, errori, tipi di dati)
La pagina impone diverse restrizioni. L'input deve essere un singolo file JSON. Il file deve avere dimensioni inferiori a 8 MB. Se il file è troppo grande, viene visualizzato il messaggio "This file is too large. Use a file under ‹max›.". Il JSON deve essere "a forma di tabella", cioè un array di oggetti o un array di array. Se si carica un oggetto singolo o un valore primitivo, il tool restituisce "This JSON is invalid or not table‑shaped.". Se il file è vuoto o contiene solo una struttura senza elementi (array vuoto), appare "This file has no table rows.". Se il numero di righe supera 10.000 o il numero di colonne supera 200, la conversione viene bloccata. Se una conversione richiede più di circa 12 secondi, viene interrotta con il messaggio "This conversion is taking too long. Try a smaller file.".
Per quanto riguarda i tipi di dato:
- Numeri: vengono scritti come numeri nelle celle XLSX.
- Booleani:
trueefalsediventano valori booleani nella cella. - Stringhe: vengono scritte come testo.
- Null: viene rappresentato come cella vuota (nessun valore).
- Oggetti annidati: vengono espansi con percorsi puntati.
La conversione non preserva formule, stili o unione di celle. L'output ha un solo foglio di lavoro, denominato Sheet1. Il tool mostra un'anteprima della tabella (le prime 8 righe e 8 colonne), il conteggio di righe e colonne e la dimensione del file XLSX generato.
Messaggi di errore esatti:
- "Choose a CSV, JSON or XLSX file."
- "This file is too large. Use a file under ‹max›."
- "This JSON is invalid or not table‑shaped."
- "This file has no table rows."
- "Conversion cancelled."
- "This conversion is taking too long. Try a smaller file."
- "Could not convert this file."
Questi messaggi sono visualizzati all'utente nella lingua della pagina.
Chi ha bisogno di questo strumento? (utenti tipici)
Il target è principalmente chi ha dati JSON da un'API e vuole lavorarci in Excel senza scrivere codice. Ad esempio:
- Un analista dati che riceve un file JSON da un servizio di terze parti (come un export di Google Analytics, una risposta REST). Invece di scrivere uno script Python o usare
jq, carica il file e ottiene una tabella. - Uno sviluppatore che deve ispezionare rapidamente la struttura di dati complessi: l'anteprima mostra subito colonne e righe, evidenziando eventuali annidamenti.
- Un team di vendita o marketing che collabora con reparti tecnici: i dati JSON vengono convertiti in XLSX e condivisi via email o OneDrive.
- Un libero professionista che gestisce configurazioni JSON e deve presentare i dati in forma tabellare per un report.
La caratteristica distintiva – conservare i tipi numerici e booleani – è cruciale per chi deve fare calcoli in Excel. Se si usasse una conversione via CSV, numeri come 1234 diventerebbero stringhe "1234", causando errori nelle formule. Con XLSX, i numeri restano numeri.
Vantaggi della conversione client‑side (privacy, nessun upload)
Molte piattaforme di conversione online richiedono di caricare il file su un server. La pagina json-to-excel elabora tutto nel browser. Questo significa:
- I dati non lasciano mai il computer dell'utente, eliminando il rischio di intercettazione o conservazione non autorizzata.
- Non ci sono limiti di banda imposti dal server.
- La conversione è veloce per file di dimensioni moderate; solo file molto grandi potrebbero rallentare il browser (da qui il messaggio "This conversion is taking too long. Try a smaller file.").
- Richiede una connessione iniziale per caricare la pagina, ma l'elaborazione è locale.
La privacy è particolarmente importante per dati sensibili come elenchi di clienti, dati finanziari o configurazioni interne.
Domande frequenti
1. Il mio JSON ha molti livelli di annidamento. Come vengono gestiti?
Ogni livello di annidamento viene appiattito con nomi di colonna del tipo livello1.livello2.campo. Se due oggetti hanno chiavi diverse, tutte le possibili colonne vengono create; le celle mancanti rimangono vuote.
2. Perché vedo il messaggio "Questo JSON non è valido o non ha forma di tabella"?
Lo strumento accetta solo JSON che sia un array di oggetti (es. [{...},{...}]) o un array di array (es. [["a","b"],["c","d"]]). Un oggetto singolo è accettato e si converte in una tabella a riga singola. Un valore primitivo non è considerato "a forma di tabella". Inoltre, il file deve essere JSON sintatticamente corretto.
3. Cosa succede se nel JSON sono presenti valori null?
null viene convertito in una cella vuota nel foglio XLSX. Non viene scritto né la stringa "null" né un valore speciale.
4. Il file XLSX generato può contenere più fogli?
No. La conversione produce un unico foglio di lavoro.
5. Posso convertire un file JSON di 100 MB?
Il limite di dimensione è di 8 MB. File più grandi vengono rifiutati con il messaggio: This file is too large. Use a file under ‹max›.. Se la conversione richiede più di circa 12 secondi, viene interrotta con il messaggio This conversion is taking too long. Try a smaller file..
6. I numeri lunghi (es. codici fiscali a 16 cifre) vengono troncati in Excel?
Excel tronca i numeri a 15 cifre decimali di precisione (limite IEEE 754). Se il JSON contiene un numero intero di 16 o più cifre, verrà arrotondato. Per preservare la precisione, tali valori dovrebbero essere stringhe nel JSON (tra virgolette). Lo strumento non fa conversioni automatiche; se è un numero, viene scritto come numero.