Oggetti e array annidati rappresentano bene la struttura, ma risultano scomodi dove serve una lista piatta di coppie chiave-valore — fogli di calcolo, righe di log o file di traduzione. Il flatten (appiattimento) risolve esattamente questo disallineamento.
Come funziona
Ogni campo annidato diventa una riga, dove la chiave è il percorso completo verso il valore (scritto con punti o indici tra parentesi quadre) e il valore è il valore stesso. {"utente": {"indirizzo": {"citta": "Torino"}}} diventa la coppia utente.indirizzo.citta → "Torino". Gli elementi di un array ricevono un indice nel percorso, come items[0].nome.
Dove si usa: i file di traduzione (i18n)
Le chiavi piatte con notazione a punti sono il formato standard dei file di localizzazione in librerie come i18next o vue-i18n — settings.profile.title invece di un albero JSON annidato. Le piattaforme di traduzione e i flussi basati su fogli di calcolo si aspettano quasi sempre questa forma piatta, quindi appiattire un file di lingua annidato è spesso il primo passo prima di consegnarlo a un traduttore.
A cosa serve in pratica
- Importare dati annidati da un'API in un foglio di calcolo o in una tabella piatta di database.
- Rendere leggibile il confronto riga per riga tra due oggetti complessi.
- Trovare rapidamente un valore specifico in un JSON molto annidato, vedendo il percorso completo in un colpo d'occhio.
L'operazione inversa: unflatten
Ricostruire la struttura annidata dalla lista piatta significa scomporre ogni chiave nei suoi segmenti di percorso (in base a punti e indici tra parentesi) e costruire progressivamente oggetti e array annidati. L'ambiguità emerge quando un percorso può avere due significati — se i dati contengono sia una chiave letterale "a.b" sia un percorso annidato a.b, unflatten non può indovinare quale fosse l'intenzione, e segnala un conflitto invece di sovrascrivere silenziosamente qualcosa.