Les objets et tableaux imbriqués sont pratiques pour représenter une structure, mais gênants là où il faut une liste plate de paires clé-valeur — tableurs, lignes de log ou fichier de traduction. L'aplatissement (flatten) résout précisément ce décalage.
Comment ça fonctionne
Chaque champ imbriqué devient une ligne, où la clé est le chemin complet vers la valeur (avec des points ou des index entre crochets) et la valeur est la valeur elle-même. {"utilisateur": {"adresse": {"ville": "Lyon"}}} devient la paire utilisateur.adresse.ville → "Lyon". Les éléments d'un tableau reçoivent un index dans le chemin, comme items[0].nom.
Où cela intervient : les fichiers de traduction (i18n)
Les clés plates en notation pointée sont le format standard des fichiers de localisation dans des bibliothèques comme i18next ou vue-i18n — settings.profile.title plutôt qu'un arbre JSON imbriqué. Les plateformes de traduction et les flux basés sur des tableurs attendent presque toujours cette forme plate, donc aplatir un fichier de langue imbriqué est souvent la première étape avant de l'envoyer à un traducteur.
À quoi cela sert en pratique
- Importer des données imbriquées d'une API dans un tableur ou une table plate de base de données.
- Rendre lisible une comparaison ligne par ligne entre deux objets complexes.
- Retrouver rapidement une valeur dans un JSON très imbriqué en voyant son chemin complet d'un coup d'œil.
L'opération inverse : unflatten
Reconstruire la structure imbriquée à partir de la liste plate implique de découper chaque clé en segments de chemin (selon les points et les index entre crochets) puis de construire progressivement objets et tableaux imbriqués. L'ambiguïté apparaît quand un chemin peut signifier deux choses : si les données contiennent à la fois une clé littérale "a.b" et un chemin imbriqué a.b, unflatten ne peut pas deviner lequel était voulu et signale un conflit plutôt que d'écraser silencieusement une valeur.