Cosa significa appiattire i dati JSON
Il CSV è piatto: righe e colonne, nient'altro. Il JSON è un albero: oggetti dentro oggetti, liste dentro oggetti, oggetti dentro liste. Appiattire i dati JSON significa trasformare quell'albero in una tabella senza perdere le informazioni che ti servono davvero. Ogni strumento di appiattimento esegue le stesse tre mosse e, una volta che sai nominarle, ogni strumento diventa prevedibile, che si tratti di un convertitore online, di una libreria Python o di un comando da terminale. La prevedibilità conta perché il CSV non perdona: una scelta sbagliata all'inizio si propaga in ogni filtro, ogni ordinamento e ogni somma che farai dopo, e spesso te ne accorgi solo quando i numeri non tornano più.
Le tre mosse sono: gli oggetti annidati diventano colonne con notazione a punti (customer diventa customer.name e customer.city); le liste di valori semplici diventano una sola cella unita (items diventa book; pen); e le liste da analizzare diventano una riga per elemento, un'operazione chiamata esplodere. Quale mossa si applica a quale lista è l'intera abilità ed è una decisione, non un'impostazione predefinita. Due file con la stessa forma possono richiedere scelte opposte: una lista di tag va unita, una lista di righe d'ordine va esplosa, e solo il significato dei dati, non la loro forma, ti dice quale mossa è corretta. Imparare a fare questa distinzione è molto più utile che imparare a memoria i comandi di uno strumento specifico, perché la distinzione resta valida in ogni strumento che userai in futuro.
Una distinzione conta prima di ogni altra cosa. La nostra guida precedente su come appiattire JSON in CSV documenta esattamente cosa fa l'interruttore di appiattimento del convertitore di questo sito, cella per cella, compresi i casi limite come le liste vuote e i valori nulli. Questa guida riguarda invece il lavoro in sé: hai dati JSON annidati, vuoi una tabella piatta e puoi scegliere come appiattire ogni parte, in qualsiasi strumento, compresi quelli che non hanno alcun interruttore. Se conosci già il comportamento del convertitore, questa guida ti mostra come ottenere lo stesso risultato, e di più, in Python, in jq e in Excel. Se invece parti da zero, qui trovi il metodo completo, con un esempio svolto che puoi verificare riga per riga.
L'esempio svolto: tre ordini annidati
Ogni esempio di questa guida usa lo stesso piccolo insieme di dati di prova, tre ordini con un oggetto cliente annidato, una lista di articoli e una lista vuota nel terzo ordine. È abbastanza piccolo da controllare a mano e abbastanza annidato da mostrare ogni decisione. Gli stessi tre ordini compaiono in ogni ricetta, così puoi confrontare l'output della giunzione, dell'esplosione e del convertitore online sullo stesso input e vedere subito cosa cambia da una mossa all'altra, senza dover indovinare se una differenza dipenda dai dati o dal metodo. Quando provi le ricette sul tuo computer, usa proprio questo file: se il tuo output coincide con quello mostrato qui, la ricetta funziona; se differisce, sai che qualcosa nel tuo ambiente o nel tuo comando va corretto prima di applicarla ai tuoi dati reali.
[
{ "orderId": "A-101", "customer": { "name": "Ana", "city": "Madrid" }, "items": ["book", "pen"], "total": 19.99 },
{ "orderId": "A-102", "customer": { "name": "Ken", "city": "Osaka" }, "items": ["lamp"], "total": 42.50 },
{ "orderId": "A-103", "customer": { "name": "Lina", "city": "Berlin" }, "items": [], "total": 7.25 }
]Mossa 1: gli oggetti annidati diventano colonne con notazione a punti
Un oggetto annidato ha campi con nome, quindi appiattirlo è un'operazione meccanica: scendi lungo l'albero e unisci i nomi delle chiavi con i punti. customer.name contiene Ana, customer.city contiene Madrid e l'annidamento originale scompare senza che nulla vada perso, perché il nome con i punti registra il percorso completo per tornare alla fonte. Puoi leggere ogni colonna e sapere subito da dove viene il valore, senza aprire il file JSON originale. Questo è il motivo per cui la notazione a punti è diventata la convenzione universale: è leggibile, è reversibile e funziona allo stesso modo in quasi ogni strumento, dal foglio di calcolo al database. Quando vedi una colonna come customer.city, sai che nel JSON originale esisteva un oggetto customer con un campo city al suo interno.
Questa è la mossa su cui tutti gli strumenti sono d'accordo. Il convertitore online la esegue, pandas con json_normalize la esegue, jq la esegue quando nomini i percorsi in modo esplicito. L'unico giudizio richiesto riguarda la profondità: uno o due livelli di punti restano leggibili, mentre quattro livelli (a.b.c.d) di solito indicano che stai appiattendo una struttura che non è mai stata pensata per diventare una riga di tabella, e questo è l'argomento della sezione sulla profondità qui sotto. Se le colonne diventano lunghe e difficili da leggere, il problema non è la notazione a punti, ma la profondità che hai scelto: fermati prima, lascia una parte come testo JSON e la tabella tornerà chiara. La regola pratica è semplice: appiattisci ciò che userai, lascia il resto così com'è.
orderId,customer.name,customer.city,items,total
A-101,Ana,Madrid,book; pen,19.99
A-102,Ken,Osaka,lamp,42.50
A-103,Lina,Berlin,,7.25Mossa 2: le liste brevi diventano una sola cella unita
Una lista di valori semplici, stringhe o numeri senza annidamenti propri, si appiattisce in una sola cella unendo i valori con un separatore. Il convertitore di questo sito unisce con un punto e virgola seguito da uno spazio (book; pen). Il punto e virgola è una scelta deliberata: le virgole entrerebbero in conflitto con il delimitatore del CSV, mentre un punto e virgola dentro una cella è privo di ambiguità e sopravvive a un passaggio in Excel e ritorno. La scelta del separatore sembra un dettaglio, ma decide se il tuo file resterà leggibile dopo averlo aperto, modificato e salvato di nuovo. Un separatore che collide con il contenuto, come la virgola, crea celle spezzate e colonne spostate. Un separatore come il punto e virgola, raro nei testi normali, mantiene la cella intatta e rende evidente dove finisce un valore e dove inizia il successivo.
Unire mantiene una riga per record, ed è ciò che vuoi quando la lista è un contesto, non l'oggetto dell'analisi. I tag di un articolo, le competenze di un profilo, le categorie di un prodotto: li leggerai, forse li filtrerai, ma non sommerai né conterai i singoli valori. Unisci quelle liste. La tabella resta compatta, ogni record occupa una sola riga e puoi comunque cercare un valore dentro la cella con un filtro di testo. Il limite è chiaro: finché ti basta leggere la lista come un insieme, l'unione è perfetta. Nel momento in cui ti serve contare o sommare i singoli elementi, la cella unita diventa un ostacolo e serve l'esplosione, descritta nella mossa successiva.
orderId,items
A-101,book; pen
A-102,lamp
A-103,Mossa 3: esplodere una lista in una riga per elemento
Esplodere è la mossa che la maggior parte delle persone trascura, perché la maggior parte dei convertitori non la offre. Invece di comprimere una lista in una sola cella, crei una riga per ogni elemento e ripeti i campi del genitore in ogni riga. L'ordine A-101, con due articoli, diventa due righe: una per book e una per pen, ciascuna con Ana, Madrid e 19.99. Tre ordini diventano quattro righe, perché la lista vuota in A-103 produce comunque una riga con un articolo vuoto, così l'ordine stesso non viene mai eliminato in silenzio. La ripetizione sembra uno spreco, ma è la struttura che rende l'analisi possibile: ogni riga descrive un singolo fatto, e i fatti si possono contare, filtrare e sommare senza dover prima estrarre valori da una cella di testo.
Esplodi quando la lista è l'unità di analisi: righe d'ordine che sommerai, eventi che conterai, transazioni che filtrerai. Se invece unisci quelle liste, i numeri per singolo elemento restano intrappolati dentro una cella di testo e nessuna formula di foglio di calcolo li recupera in modo pulito. La regola pratica: se mai filtrerai, conterai o sommerai sui singoli valori dentro la lista, esplodila. Se la lista verrà solo letta nel suo insieme, uniscila. Questa regola vale per ogni strumento e per ogni tipo di dato, dagli ordini di un negozio ai log di un'applicazione. Applicarla all'inizio ti evita di rifare il lavoro quando, a metà analisi, ti accorgi che i valori che ti servono sono chiusi dentro una cella.
Dopo l'esplosione, l'esempio svolto diventa cinque righe compreso l'intestazione: A-101 due volte (book, poi pen), A-102 una volta (lamp), A-103 una volta con un articolo vuoto. I campi dell'ordine si ripetono in ogni riga, e questo sembra ridondante ma è esattamente lo scopo: ogni riga è ora un singolo fatto analizzabile. Puoi contare gli articoli, filtrare per articolo, sommare per cliente o per città, senza alcuna formula speciale. Il prezzo totale ripetuto va letto con attenzione: se sommi la colonna total sulle righe esplose, conti A-101 due volte. Quando esplodi, somma solo le colonne che appartengono al singolo elemento, oppure aggrega prima per ordine.
Esplodere o unire? Decidi in base a cosa significa la lista
La decisione tra esplodere e unire è l'unico punto in cui l'appiattimento si sbaglia in silenzio, perché entrambi gli output sembrano CSV validi. Una lista unita di righe d'ordine si apre benissimo in Excel e nulla ti avverte che i prezzi per singolo articolo sono ora diventati testo irrecuperabile. Poni una domanda per ogni lista prima di appiattirla e la scelta si farà da sola. Non fidarti dell'aspetto del file: un CSV corretto dal punto di vista sintattico può essere sbagliato dal punto di vista analitico, e la differenza emerge solo quando provi a usare i dati. Per questo la domanda va posta prima, non dopo, e va posta lista per lista, perché nello stesso file una lista può richiedere l'esplosione e un'altra l'unione.
- Filtrerai, conterai o sommerai sui singoli valori dentro questa lista? Se sì, esplodila. Righe d'ordine, eventi, transazioni e misurazioni appartengono a questo gruppo.
- La lista verrà solo letta nel suo insieme? Se sì, uniscila. Tag, categorie, competenze ed etichette appartengono a questo gruppo.
- Sei indeciso? Esplodi. Una tabella esplosa può sempre essere raggruppata di nuovo in celle unite, mentre una cella unita non può essere divisa di nuovo in righe in modo affidabile, perché il separatore potrebbe comparire anche dentro un valore.
- La lista contiene oggetti, non valori semplici? Allora nessuna delle due mosse si applica direttamente: una lista di oggetti, se unita, collassa in una cella di testo JSON, oppure richiede che i suoi campi vengano trasformati con i punti prima dell'esplosione. Vedi la sezione sulla profondità per questo caso.
Quanto in profondità conviene appiattire?
Appiattire fino alle foglie sembra accurato e produce le tabelle peggiori: decine di colonne con nomi a punti di quattro livelli, la maggior parte vuote, nessuna leggibile. Appiattisci fino alla profondità che userai davvero. Se filtrerai o ordinerai in base a un campo, dagli una colonna. Se lo leggerai solo nel contesto, lascia quel sottoalbero come una sola cella di testo JSON. La tentazione di appiattire tutto nasce da un'idea di completezza che in pratica si ritorce contro: più colonne crei, più la tabella diventa difficile da leggere, da filtrare e da condividere. Una tabella con cinquanta colonne di cui ne usi quattro non è più completa, è solo più confusa, e chi la riceve farà fatica a capire quali colonne contano davvero.
Una regola pratica per fermarsi: appiattisci due o tre livelli di profondità e mantieni tutto ciò che è più profondo come testo JSON. Una lista di oggetti di tracciamento di una spedizione, per esempio, è un dato reale, ma raramente merita delle colonne: una sola cella di tracciamento che contiene il testo JSON mantiene la tabella leggibile e il file JSON originale conserva il dettaglio completo. Il CSV appiattito è una vista derivata dei tuoi dati, non un sostituto, quindi conserva il file JSON originale. Quando ti servirà il dettaglio profondo, lo troverai nel file originale, senza doverlo ricostruire da colonne sparse. Questa separazione tra vista e fonte è ciò che rende il lavoro ripetibile: puoi rigenerare la vista in modo diverso domani, senza aver perso nulla oggi.
Dati irregolari: chiavi mancanti, liste vuote e null
Il JSON reale è irregolare: un record ha un campo che il successivo non ha, una lista è vuota, un valore è nullo. L'appiattimento gestisce tutti e tre i casi con la stessa regola noiosa, e noiosa è ciò che vuoi: la riga di intestazione è l'unione di ogni chiave trovata in qualsiasi punto dei dati e ogni record privo di una chiave riceve una cella vuota in quella posizione. Nessun errore, nessuna riga eliminata, solo una cella vuota che puoi vedere. Questa prevedibilità è preziosa quando lavori con dati reali, perché ti permette di controllare l'output a colpo d'occhio: se una colonna è vuota per molte righe, sai che quel campo era assente in quei record, non che lo strumento ha perso qualcosa.
Le liste vuote e i nulli seguono la stessa regola in entrambe le mosse. Unite, una lista vuota diventa una cella vuota. Esplose, una lista vuota produce comunque una riga con un articolo vuoto, così il record genitore sopravvive. Un nullo dentro una lista diventa un segmento vuoto tra i separatori: una lista di mug, nullo e plate si unisce in mug; ; plate, con lo spazio vuoto visibile esattamente dove si trovava il nullo. Vedere lo spazio vuoto è meglio che vederlo scomparire, perché ti dice che in quella posizione esisteva un valore mancante, non che la lista avesse solo due elementi. Quando controlli l'output, cerca proprio questi segnali: celle vuote e segmenti vuoti sono informazioni, non errori.
orderId,items
A-101,book; pen
A-103,mug; ; plateRicetta 1: Python, json_normalize più explode
Python con pandas è il percorso più tollerante, perché json_normalize appiattisce gli oggetti e explode gestisce le liste in due righe leggibili. Eseguito sul file di prova con tre ordini, json_normalize ha prodotto le colonne orderId, items, total, customer.name e customer.city, ed explode su items ha trasformato 3 righe in 4, con la lista vuota che ha lasciato una riga con un articolo vuoto. Il risultato coincide con l'output descritto nella sezione sull'esplosione, e puoi verificarlo confrontando riga per riga. Se lavori già in Python, questa è la ricetta da preferire, perché si adatta con piccole modifiche a file molto più grandi e a strutture più complesse, senza cambiare metodo. Per file di grandi dimensioni, lo stesso script resta valido: leggi il JSON, normalizza, esplodi e salva, e il passaggio intermedio resta ispezionabile a ogni punto.
import json
import pandas as pd
rows = json.load(open('orders.json'))
df = pd.json_normalize(rows)
flat = df.explode('items')
flat.to_csv('orders-flat.csv', index=False)Se vuoi la mossa dell'unione invece dell'esplosione, salta la riga di explode: json_normalize lascia la lista come lista e una riga di unione la trasforma nella cella separata da punto e virgola. Lo stesso script copre quindi entrambe le decisioni, ed è per questo che è la ricetta da scegliere quando l'appiattimento non è un'operazione una tantum. Puoi passare da un comportamento all'altro commentando una sola riga, confrontare i due output sullo stesso input e decidere con dati reali, non a sensazione. Per un lavoro ripetuto, salva lo script e riutilizzalo: la prossima volta dovrai cambiare solo il nome del file e il nome della colonna da esplodere o unire.
Ricetta 2: jq, esplodere con un solo comando
jq esplode una lista in un solo comando, senza file di script e senza dipendenze oltre a jq stesso. La ricetta qui sotto lega ogni ordine a una variabile, verifica se la sua lista items è vuota ed emette una riga con un articolo vuoto oppure una riga per ogni articolo. Eseguita sull'esempio svolto, ha prodotto esattamente l'output di cinque righe descritto nella sezione sull'esplosione: A-101 due volte, A-102 una volta, A-103 una volta con un articolo vuoto. Se lavori da terminale e ti serve un risultato rapido senza aprire un ambiente Python, jq è lo strumento più diretto: un solo comando, un output immediato e nessuna installazione aggiuntiva oltre a jq, già presente su molti sistemi. Il comando sembra lungo a prima vista, ma ogni parte ha un ruolo chiaro: intestazione, legame della variabile, controllo della lista vuota, emissione delle righe.
jq -r '. as $rows | (["orderId","name","city","item","total"] | @csv), ($rows[] | . as $o | if (.items | length) == 0 then [$o.orderId, $o.customer.name, $o.customer.city, "", $o.total] | @csv else (.items[] | [$o.orderId, $o.customer.name, $o.customer.city, ., $o.total] | @csv) end)' orders.jsonIl ramo per la lista vuota è la parte che la maggior parte delle ricette jq di esplosione online omette, ed è la parte che fa perdere dati: senza di esso, gli ordini senza articoli scompaiono completamente dall'output. Mantienilo, anche quando i tuoi dati attuali non hanno liste vuote, perché il prossimo file le avrà. I dati reali cambiano sempre e un file che oggi è completo domani può contenere record senza articoli. Una ricetta che gestisce il caso vuoto fin dall'inizio non ti costringerà a scoprire la perdita di dati dopo aver già consegnato il CSV. Copia la ricetta così com'è, con il controllo sulla lunghezza della lista, e usala come modello per ogni altra esplosione in jq.
Ricetta 3: Power Query di Excel, senza codice
Se la destinazione è comunque Excel, Power Query appiattisce il JSON senza alcun codice. Importa con Dati, poi Recupera dati, poi Da file, poi Da JSON, e Power Query mostra ogni record come una riga con le colonne annidate ancora chiuse. Le due operazioni di espansione corrispondono esattamente alle due mosse per le liste in questa guida, e scegliere quella sbagliata è lo stesso errore che si commette in qualsiasi strumento. Il vantaggio di Power Query è che vedi ogni passaggio nella cronologia delle operazioni applicate e puoi tornare indietro, correggere una scelta e rieseguire la sequenza senza riscrivere nulla. Per chi lavora ogni giorno in Excel, è spesso il percorso più rapido, perché il risultato resta dentro la cartella di lavoro e si aggiorna quando il file JSON cambia.
- Espandi una colonna di record (customer) con la freccia di espansione, poi seleziona i campi che vuoi: name e city diventano colonne normali. Questa è la Mossa 1.
- Espandi una colonna di lista (items) con la freccia di espansione e scegli Espandi in nuove righe per esploderla: una riga per articolo, con i campi del genitore ripetuti. Questa è la Mossa 3.
- Espandi una colonna di lista e scegli Estrai valori, con un separatore punto e virgola seguito da uno spazio, per unirla in una sola cella. Questa è la Mossa 2.
- Ripeti per ogni colonna annidata fino a quando la tabella è piatta alla profondità che ti serve, poi Chiudi e carica.
Ricetta 4: il convertitore online, unisce ma non esplode mai
Il convertitore gratuito di questo sito appiattisce con l'interruttore di appiattimento attivato: gli oggetti annidati diventano colonne con notazione a punti e le liste si uniscono in celle separate da punto e virgola, esattamente le Mosse 1 e 2. Con l'interruttore disattivato, i valori annidati restano come testo JSON dentro le loro celle, che è l'opzione lasciare annidato del titolo. Ciò che il convertitore non fa è esplodere: non esiste un'opzione che trasformi un ordine in una riga per articolo. Per molti file questa combinazione è sufficiente, perché le liste sono contesto e l'unione è la scelta giusta. Quando invece ti serve l'esplosione, sai già che devi passare a un altro strumento, senza perdere tempo a cercare un'opzione che non esiste.
Questa è una limitazione onesta, non un errore. Esplodere cambia il numero di righe, che è una decisione di modellazione dei dati, e un convertitore con un clic non dovrebbe prenderla in silenzio. Se la tua lista deve essere esplosa, usa la ricetta Python o jq qui sopra e usa il convertitore per i molti file in cui unire è la scelta corretta. La separazione è chiara: il convertitore gestisce in modo rapido e sicuro i casi comuni, le ricette gestiscono i casi in cui la struttura delle righe deve cambiare. Tenere distinti i due usi ti evita errori: non chiederai al convertitore di fare ciò che non fa e non scriverai uno script per un file che il convertitore risolve in secondi.
Si può tornare indietro e ripristinare la struttura annidata?
Appiattire è facile da invertire per gli oggetti e difficile da invertire in modo esatto per le liste esplose, quindi pianifica di conseguenza. Le colonne con punti si dividono di nuovo in oggetti annidati con un piccolo script e nulla va perso, perché i punti hanno registrato il percorso completo. Le righe esplose si raggruppano di nuovo con un raggruppamento sulla chiave genitore, raccogliendo di nuovo gli articoli in una lista, ma l'ordine originale degli articoli sopravvive solo se hai mantenuto un indice di riga e le liste vuote originali sono indistinguibili da quelle mancanti. La reversibilità parziale non è un difetto, è una proprietà da conoscere: se sai cosa si perde, puoi decidere cosa conservare prima di appiattire.
La regola pratica deriva da questo: non trattare mai il CSV appiattito come la tua unica copia. Conserva il file JSON originale, tratta il CSV come una vista derivata costruita per una singola analisi e riappiattisci dal JSON quando l'analisi cambia. Lo spazio di archiviazione costa poco e rigenerare dalla fonte è meglio che cercare di correggere un CSV che ha perso struttura in silenzio. Questa abitudine vale per ogni progetto, piccolo o grande: la fonte resta il JSON, il CSV è un prodotto usa e getta che puoi ricostruire in qualsiasi momento. Se un giorno ti servirà una vista diversa, con un'altra lista esplosa o unita, ripartirai dal JSON e otterrai un output pulito, invece di dover indovinare cosa l'output precedente avesse perso.
Lista di controllo per appiattire
Prima di appiattire qualsiasi file JSON, scorri questi sei controlli. Richiedono un minuto e intercettano ogni modalità di errore di questa guida. Non sono formalità: ogni controllo corrisponde a un errore reale che abbiamo descritto nelle sezioni precedenti, dalla scelta sbagliata tra esplodere e unire alla perdita di righe con liste vuote. Se li applichi con costanza, i tuoi file appiattiti saranno prevedibili e verificabili, e quando qualcosa non tornerà saprai subito dove guardare. Tieni la lista vicina finché non diventa automatica: dopo pochi file, la applicherai senza pensarci.
- Nomina prima l'unità di analisi: una riga per ordine, per articolo o per evento? Quella risposta sceglie tra esplodere e unire per ogni lista.
- Appiattisci gli oggetti fino alla profondità su cui filtrerai o ordinerai e lascia i sottoalberi più profondi come testo JSON.
- Controlla ogni lista: i valori semplici si uniscono o si esplodono in modo pulito, ma una lista di oggetti richiede che i suoi campi vengano trasformati con i punti prima che una delle due mosse abbia senso.
- Aspettati dati irregolari: le chiavi mancanti diventano celle vuote, le liste vuote diventano una riga vuota o una cella vuota, i nulli diventano segmenti vuoti.
- Attenzione ai punti dentro i nomi delle chiavi: una chiave come version.2 collide con un percorso annidato con lo stesso nome e uno dei due vince in silenzio.
- Conserva il JSON originale. Il CSV appiattito è una vista derivata, non la fonte di verità.
Guide correlate
- Come appiattire JSON in CSV: cosa fa davvero l'interruttore di appiattimento (Guida 2026)
- Come convertire JSON in CSV: 3 metodi affidabili (guida 2026)
- Come convertire un file JSON in CSV: caricamento, Excel e riga di comando (Guida 2026)
- Esiste un modo per convertire JSON in CSV? Sì — 5 modi, scegli in base alla tua situazione (Guida 2026)
- Come fare JSON to CSV online: fallo in questa scheda in 30 secondi (Guida 2026)
- json to csv converter download: cosa scaricare davvero (Guida 2026)
- Convert Large JSON to CSV Online Free: Quando un File è Troppo Grande? (Guida 2026)
- Cos'è un file JSON e un file CSV? Guida per principianti a entrambi i formati (Guida 2026)
- What Does Flattening a JSON Mean? Cosa significa davvero il termine (Guida 2026)
- What is JSON to CSV online: le tre parole spiegate (guida 2026)
- what is JSON to CSV converter online: anatomia dello strumento (guida 2026)
- convert json to csv locally: convertire JSON in CSV sul tuo computer, senza caricare il file (Guida 2026)
- Quali sono i modi per convertire JSON in CSV in locale? 6 metodi a confronto (Guida 2026)
- Il file CSV si apre in un'unica colonna in Excel: perché succede e come correggerlo (Guida 2026)
- Perché il tuo CSV mostra caratteri strani in Excel e come risolvere il problema di codifica (Guida 2026)
- Perché Excel elimina gli zeri iniziali dai codici del tuo CSV e come conservarli (Guida 2026)
- Perché Excel cambia le date del CSV e come mantenerle invariate (Guida 2026)
- Perché salvare un CSV in Excel lo modifica e come tenere al sicuro l'originale (Guida 2026)
- Perché Excel non apre il tuo file CSV troppo grande e cosa fare invece (Guida 2026)
Domande frequenti
Cosa significa appiattire i dati JSON?
Significa trasformare un albero JSON annidato in una tabella piatta di righe e colonne. Gli oggetti annidati diventano colonne con notazione a punti (customer.name), le liste di valori semplici si uniscono in una sola cella (book; pen) oppure esplodono in una riga per elemento e tutto ciò che non appiattisci resta come testo JSON in una cella. È un'operazione di riorganizzazione, non di cancellazione: i dati restano gli stessi, cambia solo la forma in cui li leggi e li analizzi.
Conviene appiattire il JSON annidato prima di convertirlo in CSV?
Sì, a meno che tu non voglia testo JSON dentro le celle del tuo CSV. Il CSV non ha annidamenti, quindi i dati annidati devono appiattirsi, unirsi o restare come testo. Appiattire con l'interruttore attivato ti dà colonne reali che puoi filtrare e ordinare; lasciarlo disattivato mantiene i valori annidati come testo JSON leggibile in singole celle. La scelta dipende da come userai il file: per l'analisi servono colonne, per la lettura rapida può bastare il testo.
Come si trasforma un array JSON in righe, una per elemento?
Esplodilo. In Python: pd.json_normalize(rows) e poi df.explode('items'). In jq: lega ogni record a una variabile ed emetti una riga per ogni articolo, con un ramo esplicito per le liste vuote, così i record senza articoli non vengono eliminati. Entrambe le ricette sono in questa guida e sono state verificate sull'esempio svolto. Ricorda che esplodere ripete i campi del genitore in ogni riga e aumenta il numero di righe: è normale e necessario per ottenere una riga per elemento.
Come si appiattisce il JSON in Python?
Usa pandas: carica il file con json.load, usa pd.json_normalize(rows) per appiattire gli oggetti annidati in colonne con notazione a punti, poi unisci le colonne di liste con un separatore oppure usa df.explode('items') per ottenere una riga per elemento. Per oggetti annidati senza pandas, una piccola funzione ricorsiva di appiattimento che costruisce chiavi con punti fa lo stesso lavoro. Il metodo con pandas resta il più leggibile, perché separa in due passaggi chiari l'appiattimento degli oggetti e la gestione delle liste.
Come si appiattisce il JSON in Excel?
Usa Power Query: Dati, Recupera dati, Da file, Da JSON. Espandi le colonne di record per appiattire gli oggetti annidati ed espandi le colonne di lista con Espandi in nuove righe per esplodere oppure Estrai valori per unire. Ripeti per ogni colonna annidata, poi Chiudi e carica. Ogni passaggio resta visibile nella cronologia, quindi puoi correggere una scelta senza ricominciare da capo.
Cosa succede alle liste vuote e ai nulli quando si appiattisce il JSON?
Diventano celle vuote o segmenti vuoti, mai errori. Una chiave mancante produce una cella vuota, una lista vuota si unisce in una cella vuota oppure esplode in una riga con un articolo vuoto, un nullo diventa una cella vuota e un nullo dentro una lista diventa un segmento vuoto tra separatori (mug; ; plate). Il comportamento è prevedibile in ogni strumento che segue le regole di questa guida: nessun record scompare e nessun errore interrompe la conversione.
Si può appiattire il JSON online senza installare nulla?
Sì. Incolla il JSON o carica un file in un convertitore online gratuito con l'appiattimento attivato: gli oggetti annidati diventano colonne con notazione a punti e le liste si uniscono in una sola cella. Se devi esplodere una lista in una riga per elemento, usa invece la ricetta Python o jq in questa guida, perché i convertitori online uniscono le liste e non le esplodono. Per i file in cui l'unione è la scelta giusta, il convertitore online è il percorso più rapido e non richiede alcuna installazione.
JSON annidato? Appiattiscilo nel browser, gratis
Incolla il JSON o carica un file: gli oggetti annidati si appiattiscono in colonne con notazione a punti, le liste si uniscono in celle pulite e il download è in semplice UTF-8. Gratis, senza registrazione, tutto nel tuo browser.
Apri il convertitore da JSON a CSV