JSON
JSON Path Extractor / Flatten
Aplatir (Flatten) un JSON imbriqué en une liste plate "chemin : valeur" et le reconstruire en une structure imbriquée (Unflatten). La notation de chemin est la même que dans 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.
Article sur cet outil: JSON Flatten : transformer une structure imbriquée en liste plate
Questions fréquentes
Que font Flatten et Unflatten ?
Flatten transforme un JSON imbriqué en liste plate de paires chemin:valeur ; Unflatten fait l'inverse et reconstruit la structure imbriquée à partir de cette liste.
Le JSON que je colle est-il traité localement ?
Oui, tout le traitement se fait dans le navigateur en JavaScript, sans envoi vers un serveur.
Comment les éléments de tableau apparaissent-ils dans le chemin ?
Ils deviennent des clés indexées entre crochets, comme store.book[0].price, où [0] désigne le premier élément du tableau book.
Que se passe-t-il si une clé réelle contient elle-même un point ?
C'est une situation ambiguë : le chemin user.name peut désigner aussi bien un objet imbriqué {"user": {"name": ...}} qu'une clé plate {"user.name": ...}. La notation pointée ne fait pas la distinction, donc mieux vaut éviter ce genre de clés ou les traiter séparément.
Le format des chemins est-il identique dans tous les outils similaires ?
Non. La notation pointée pour les objets (user.name) est répandue presque partout, mais la notation des index de tableau varie : ici c'est items[0], alors que certaines bibliothèques écrivent items.0 sans crochets.