JSON
JSON Path Extractor / Flatten
Appiattire (Flatten) un JSON annidato in un elenco piatto "percorso: valore" e ricostruirlo in una struttura annidata (Unflatten). La notazione del percorso è la stessa usata in JSONPath/JSON Diff: store.book[0].price.
Deeply nested JSON is hard to compare or iterate over programmatically. Flatten unrolls such a structure into a flat list of "path: value" pairs (e.g. store.book[0].price: 12.99), and Unflatten rebuilds it.
How to use it
- Flatten: paste nested JSON and get a flat list of every leaf value with its full path.
- Unflatten: paste a list of "path: value" pairs to rebuild a nested JSON structure from it.
- The path notation matches this site's JSONPath and JSON Diff tools — items[0].name for array elements.
Common uses
- Turning a deeply nested API response into a flat list for import into a spreadsheet or analytics system.
- Building a translation dictionary or config back into nested JSON from flat keys (form.errors.email).
- Quickly finding every value on a given topic in a very large JSON document via a flat path list.
Things to keep in mind
Array index notation varies between libraries — this tool uses items[0], though some write items.0 without brackets.
Unflatten requires that paths don't conflict with each other (e.g. one and one.two at the same time) — otherwise the structure can't be unambiguously rebuilt.
Articolo su questo strumento: JSON Flatten: trasformare una struttura annidata in una lista piatta
Domande frequenti
Cosa significa "appiattire" un JSON?
Significa trasformare una struttura JSON annidata in un elenco piatto di coppie percorso: valore, usando la notazione a punti e parentesi, ad esempio store.book[0].price.
Posso tornare alla struttura originale dopo averla appiattita?
Sì, lo strumento supporta anche l'operazione inversa (unflatten), che ricostruisce la struttura annidata originale a partire dall'elenco piatto.
Come vengono rappresentati gli elementi di un array nel percorso?
Diventano chiavi indicizzate tra parentesi quadre, come [0] e [1], concatenate al resto del percorso.
Cosa succede se una chiave reale contiene essa stessa un punto?
È una situazione ambigua: il percorso user.name può significare sia un oggetto annidato {"user": {"name": ...}}, sia una chiave piatta {"user.name": ...}. La notazione a punti non distingue i due casi, quindi queste chiavi andrebbero evitate o gestite separatamente.
Il formato dei percorsi è lo stesso in tutti gli strumenti simili?
No. La notazione a punti per gli oggetti (user.name) è diffusa praticamente ovunque, ma la notazione per gli indici degli array varia: qui si usa items[0], mentre alcune librerie scrivono items.0 senza parentesi.