Fusionner JSON
Outil gratuit en ligne pour fusionner JSON. En un clic, fusionnez plusieurs objets JSON selon une stratégie choisie (Profond / Superficiel / Concaténer Tableau / Remplacer Tableau) avec 4 modes de résolution de conflits. Idéal pour l'agrégation multi-sources, les couches de configuration et la consolidation i18n.
Recommandations connexes
Qu'est-ce que Fusionner JSON (JSON Merge) ?
Fusionner JSON (JSON Merge) est l'opération de combiner deux ou plusieurs objets JSON en un nouvel objet selon certaines règles. Elle apparaît extrêmement fréquemment en ingénierie : ① Assembler du JSON de plusieurs microservices en une réponse unifiée (agrégation de couche BFF) ; ② Combiner config base / env / utilisateur sous une logique « override par environnement » pour produire la config finale (Node.js config, Viper, Spring Cloud Config) ; ③ Fusionner, écraser et compléter plusieurs fichiers de traduction i18n en un dictionnaire complet ; ④ Combiner plusieurs tableaux de données mock en données de test complètes ; ⑤ Fusionner plusieurs réponses paginées d'API en un dataset complet.
La partie difficile n'est pas la « fusion » mais « comment gérer les conflits ». Il existe 4 stratégies courantes de résolution de conflits : ① **Fusion Profonde (Deep Merge)** : Récursion dans les objets imbriqués, fusionnant chaque clé individuellement et n'écrasant qu'en cas de conflit sur les nœuds feuilles — idéal pour les couches de configuration. ② **Fusion Superficielle (Shallow Merge)** : Ne fusionne que les clés de niveau supérieur, remplaçant entièrement les clés de même nom — sémantique la plus simple, similaire à `Object.assign`. ③ **Concaténer Tableau (Array Concat)** : Concatène les valeurs de tableau en un long tableau en préservant l'ordre des éléments — idéal pour l'agrégation d'API. ④ **Remplacer Tableau (Array Replace)** : Remplace entièrement les valeurs de tableau avec l'entrée ultérieure — idéal pour l'override de configuration.
Au niveau de l'implémentation, la fusion profonde utilise généralement une récursion basée sur pile : vérifier d'abord que les deux côtés sont des objets plats (pas tableaux, pas null), puis traiter récursivement chaque clé ; quand les types sont incohérents (ex. un côté est objet, l'autre tableau pour le même nom), suivre en général la règle « la dernière entrée gagne » sans conversion de type. L'outil Fusionner JSON de GeekFormat inclut les 4 stratégies ci-dessus et permet de basculer directement sur la page ; vous pouvez coller 2 à N segments JSON à la fois, auto-fusionner dans l'ordre, et émettre un résultat uniformément formaté. L'ensemble du processus de fusion se fait localement dans le navigateur, les données originales ne sont pas téléchargées.
Cas d'utilisation
- Fusionnez plusieurs réponses API de microservices en une structure JSON unifiée pour le front-end
- Agrégéz les fichiers de configuration par couches base / dev / prod dans la config finale via override par environnement
- Fusionnez plusieurs fichiers de traduction i18n par langue, dédupliquez et complétez en un dictionnaire complet
- Combinez plusieurs tableaux de données mock ou réponses API paginées en un dataset complet
- Composant front-end fusionnant config par défaut + personnalisation utilisateur + config d'expérience A/B distante
- Pendant la migration de données, fusionnez plusieurs exports JSON de systèmes source en un format aval unifié
Comment utiliser
- Collez 2 à N segments JSON à fusionner dans les zones de saisie gauches (2 par défaut), ou cliquez sur « + » pour ajouter plus d'entrées
- Sélectionnez une stratégie de fusion dans le menu déroulant de la barre d'outils : Fusion Profonde / Fusion Superficielle / Concaténer Tableau / Remplacer Tableau
- Cliquez sur le bouton « Fusionner » ; la zone de sortie droite affiche le résultat formaté. Si l'entrée a des erreurs de syntaxe, le numéro de ligne spécifique et le message d'erreur sont affichés
- Après avoir confirmé le résultat, cliquez sur « Copier » pour mettre la sortie fusionnée dans le presse-papiers, ou cliquez sur « Télécharger » pour enregistrer en merged.json pour plus de formatage, validation Schema, etc.
Fonctionnalités
- 4 stratégies de fusion : Fusion Profonde / Fusion Superficielle / Concaténer Tableau / Remplacer Tableau, commutable en un clic pour s'adapter à différents scénarios métier
- Supporte 2 à N segments JSON : 2 zones de saisie par défaut, cliquez sur « + » pour ajouter dynamiquement plus de JSON source, flexible pour l'agrégation multi-source
- Fusion récursive profonde : gère intelligemment les objets imbriqués multi-niveau, résout les conflits de feuille selon la stratégie spécifiée, préservant tous les champs valides
- Résolution de conflits flexible : les conflits de niveau supérieur suivent la stratégie sélectionnée ; les conflits d'objets imbriqués vont en profondeur ; les conflits de tableaux se différencient via arrayConcat/arrayReplace
- Sortie formatée unifiée : les résultats sont affichés avec indentation 2 espaces pour faciliter la revue humaine et la copie directe vers les outils en aval
- Exécution en temps réel : cliquez sur « Fusionner » juste après avoir collé pour obtenir les résultats ; les erreurs affichent les numéros de ligne JSON spécifiques et les messages d'erreur
- Traitement local pour la confidentialité : analyse, fusion et formatage se font localement dans le navigateur, aucune entrée envoyée à un serveur
- Transition transparente vers les outils en aval : les résultats peuvent être copiés en un clic vers Formateur JSON, Validateur Schema, générateurs de code, etc.
Exemples de code
Fusion profonde en JavaScript avec lodash.merge
javascript// npm install lodash.merge
import merge from 'lodash.merge';
const a = { user: { name: 'Alice', age: 28 }, tags: ['admin'] };
const b = { user: { email: 'a@x.com', age: 29 }, tags: ['editor'] };
// Fusion profonde : les objets imbriqués sont fusionnés récursivement, les nœuds feuilles prennent la valeur ultérieure
const deep = merge({}, a, b);
console.log(deep);
// => { user: { name: 'Alice', age: 29, email: 'a@x.com' }, tags: ['admin', 'editor'] }
// Fusion superficielle : les clés de niveau supérieur sont remplacées entièrement, sans descendre dans l'imbrication
const shallow = Object.assign({}, a, b);
console.log(shallow);
// => { user: { email: 'a@x.com', age: 29 }, tags: ['editor'] }Fusion profonde en Python avec mergedeep
python# pip install mergedeep
from mergedeep import merge
a = {"user": {"name": "Alice", "age": 28}, "tags": ["admin"]}
b = {"user": {"email": "a@x.com", "age": 29}, "tags": ["editor"]}
# Fusion profonde
result = merge(a, b)
print(result)
# => {'user': {'name': 'Alice', 'age': 29, 'email': 'a@x.com'}, 'tags': ['admin', 'editor']}
# Note : mergedeep par défaut concatène les tableaux ; string/number écrasent.
# Pour l'écrasement de tableau, ajoutez strategy='override'Fusion multi-JSON en CLI avec jq -s
bash# Fusionne plusieurs tableaux JSON en un long tableau
jq -s 'add' a.json b.json c.json
# Fusionne récursivement plusieurs objets JSON (jq 1.6+)
jq -s 'reduce .[] as $item ({}; . * $item)' a.json b.json
# Fusion superficielle : superpose les clés de niveau supérieur de b sur a
jq -s '.[0] * .[1]' a.json b.json
# Fusionne les tableaux et ne garde que les champs id dédupliqués
jq -s '[.[].items[]] | unique_by(.id)' a.json b.jsonFAQ
Fusionner JSON et Concaténer JSON sont-ils la même chose ?
Pas exactement. « Concaténer » signifie habituellement épisser directement des chaînes sans structure ; « fusionner » signifie combiner récursivement plusieurs objets par structure JSON et gérer les conflits de noms de clés. Cet outil se réfère au second — fusion structurée de JSON.
Comment choisir entre Fusion Profonde et Fusion Superficielle ?
Fusion superficielle : ne gère que les clés de niveau supérieur, les clés de même nom sont remplacées entièrement, similaire à `Object.assign` — le plus simple. Fusion profonde : recurse dans les objets imbriqués, fusionnant à chaque nœud feuille — plus intelligent. Si vos multiples JSONs ajoutent des champs à des sous-chemins différents (ex. base.user.name et override.user.email), utilisez la fusion profonde. Si vous voulez remplacer un sous-objet entier d'un coup, utilisez la fusion superficielle.
Lors de la fusion de tableaux, est-ce par ordre ou par index ?
Par défaut, cet outil suit la sémantique « concat » : il combine plusieurs tableaux en un long tableau en préservant l'ordre des éléments. Si vos deux tableaux ont la même longueur et que vous voulez un écrasement par index, passez à « arrayReplace » et enveloppez manuellement le tableau dans une structure d'objet d'abord.
Comment le gagnant du conflit est-il décidé quand les noms de clés entrent en collision ?
Décidé par ordre d'entrée : le JSON ultérieur écrase les clés de même nom antérieures (écrasement total sous les stratégies Superficiel / Remplacer Tableau, écrasement de feuille seulement sous Fusion Profonde). Si vous voulez « l'entrée antérieure gagne », inversez l'ordre d'entrée.
Peut-il fusionner des tableaux JSON ?
Oui. Deux scénarios typiques : ① Plusieurs JSONs sont tous des tableaux → utilisez « arrayConcat » pour fusionner en un long tableau ; ② Plusieurs JSONs sont des objets, mais un champ est un tableau → utilisez « arrayConcat » pour fusionner les tableaux, ou « arrayReplace » pour conserver la valeur de l'entrée ultérieure.
Peut-il fusionner plus de 2 JSONs à la fois ?
Oui. Par défaut il y a 2 zones de saisie ; cliquez sur « + » pour en ajouter dynamiquement. Toutes les entrées sont fusionnées de haut en bas dans l'ordre. Théoriquement illimité, mais la mémoire du navigateur limite la taille d'un seul segment.
Comment l'ordre des clés est-il déterminé après la fusion ?
Fusion profonde : l'ordre des clés du premier JSON a la priorité ; les nouvelles clés des JSONs ultérieurs sont ajoutées à la fin du niveau correspondant. Fusion superficielle : par ordre d'entrée — toutes les clés du premier JSON apparaissent en premier, les nouvelles clés des JSONs ultérieurs sont ajoutées au niveau supérieur ; les clés de même nom conservent l'ordre de la première inchangé.
L'outil change-t-il les types de champs ?
Non, il ne change pas activement les types. Si sous stratégie Superficiel / Remplacer Tableau, les clés de même nom dans deux JSONs sont de types différents (un objet, un tableau), il suit « la dernière entrée gagne » et écrase directement, sans conversion de type. La Fusion Profonde ne recurse que quand les deux côtés sont des objets plats ; dans tous les autres cas elle écrase.
Les valeurs null sont-elles préservées ?
Oui. null est une valeur JSON légale ; cet outil traite null comme une valeur feuille normale : sous Superficiel / Remplacer Tableau, un null ultérieur écrase la valeur antérieure ; sous Fusion Profonde, un null est géré par la règle d'écrasement et n'est pas spécialement sauté.
La fusion émet-elle des statistiques ?
Oui. La zone de résultats affiche le nombre de segments JSON et le nombre total de clés, pour vérification rapide ; consultez la sortie formatée à droite pour la liste complète des champs.
L'outil va-t-il télécharger mon JSON sur un serveur ?
Non. Analyse, fusion et formatage se font localement dans le navigateur, l'entrée et les résultats intermédiaires ne sont envoyés à aucun serveur. Fonctionne hors ligne, adapté pour JSON multi-source sensible (ex. configs d'environnements de production, réponses API internes).
Quel est le meilleur ordre d'utilisation avec Formateur JSON et Validateur Schema ?
Chaîne recommandée : ① Réparer JSON (nettoyer JSON illégal) → ② Cet outil Fusionner JSON (fusion multi-source) → ③ Formateur JSON (unifier l'indentation) → ④ Validation JSON Schema (vérifier la structure finale) → ⑤ Génération de code (TypeScript / Java / Go etc.). Choisissez les étapes dont vous avez besoin.
Dépannage
La fusion affiche « Unexpected token » ou « Invalid JSON »
Cause : au moins une zone de saisie contient du JSON invalide. Solution : collez d'abord le JSON défaillant dans l'outil Réparer JSON pour nettoyer (auto-gestion des virgules finales, guillemets simples, clés sans guillemets, etc.), puis revenez à cet outil ; ou vérifiez s'il vous manque des accolades / crochets externes.
Certains champs n'apparaissent pas après la fusion
Cause : sous stratégie Superficiel / Remplacer Tableau, les clés de même nom sont entièrement écrasées par l'entrée ultérieure ; sous Fusion Profonde, les champs avec valeur null écrasent aussi l'objet antérieur. Solution : passez la stratégie à « Fusion Profonde » pour vérifier couche par couche ; si confirmé c'est un écrasement null ultérieur, retirez le champ null du JSON ultérieur ou remplacez par une valeur placeholder.
Le tableau a été remplacé au lieu d'être concaténé
Cause : la stratégie actuelle est « Fusion Superficielle » ou « Remplacer Tableau ». Solution : dans le menu déroulant, passez à « Concaténer Tableau » ; ou combinez manuellement les deux tableaux en un avant la fusion.
Un objet est devenu un tableau (ou vice versa) après Fusion Profonde
Cause : les deux JSONs ont des types incohérents au même chemin (« objet vs tableau ») ; la Fusion Profonde suit « la dernière entrée gagne » quand les types diffèrent. Solution : unifiez les types des deux côtés (les deux comme objet ou les deux comme tableau), ou passez à la stratégie Superficiel / Remplacer Tableau pour rendre la sémantique explicite.
L'ordre des clés est désordonné après la fusion
Cause : les nouvelles clés du second JSON sont ajoutées par position d'insertion après le premier JSON ; les navigateurs / analyseurs trient automatiquement les clés entières pures numériquement. Solution : passez d'abord tous les JSONs d'entrée par l'outil JSON Sort pour unifier l'ordre des noms de clés, puis fusionnez ; ou triez à nouveau avant d'utiliser le résultat.
Les gros fichiers (10 Mo+) font que la fusion se fige
Cause : analyser plusieurs gros textes avec JSON.parse en une fois occupe beaucoup de mémoire. Solution : gardez chaque entrée dans 1-2 Mo ; pour les énormes fichiers utilisez des scripts Node.js (lodash.merge) ou Python (mergedeep) localement ; utilisez cet outil pour vérification petite ensuite.
Glossaire
- JSON Merge
- Opération de combiner deux ou plusieurs objets JSON en un nouveau selon des règles spécifiées. Le défi central est la stratégie de résolution des conflits de noms de clés.
- Deep Merge
- Stratégie qui recurse dans les objets imbriqués et fusionne à chaque nœud feuille ; ne recurse que quand les deux côtés sont des objets plats, sinon bascule en écrasement.
- Shallow Merge
- Stratégie qui ne fusionne que les clés de niveau supérieur et remplace entièrement les clés de même nom ; équivalent en JS à `Object.assign({}, a, b)`.
- Array Concat
- Une des stratégies de fusion de tableaux : combine plusieurs tableaux en un long tableau en préservant l'ordre des éléments ; souvent utilisée pour l'agrégation de réponses API.
- Array Replace
- Une des stratégies de fusion de tableaux : les tableaux de même nom sont entièrement remplacés par l'entrée ultérieure ; souvent utilisée pour l'override de configuration.
- Object.assign
- Méthode intégrée de JavaScript qui copie superficiellement toutes les propriétés propres énumérables d'un ou plusieurs objets source vers un objet cible ; l'implémentation standard de facto de la fusion superficielle.
- lodash.merge
- Fonction de fusion profonde fournie par la librairie Lodash ; l'implémentation de deep merge la plus courante dans l'écosystème Node.js ; les tableaux sont concaténés, pas écrasés.
- mergedeep (Python)
- Librairie de fusion profonde dans l'écosystème Python (pip install mergedeep) ; supporte un paramètre strategy pour contrôler le comportement concat vs replace des tableaux.
- jq -s 'add'
- Commande jq qui additionne plusieurs tableaux JSON en un ; fusionner plusieurs objets JSON nécessite `reduce .[] as $item ({}; . * $item)`.
- BFF (Backend for Frontend)
- Couche d'agrégation dans l'architecture microservices située entre le front-end et les services back-end ; a souvent besoin de fusionner les réponses JSON de plusieurs services en une réponse unifiée — un scénario classique de fusion JSON.
4 Stratégies de Fusion JSON Comparées
| Stratégie | Portée | Gestion tableau | Scénario typique |
|---|---|---|---|
| Fusion Profonde | Recurse tous les niveaux imbriqués | Selon arrayConcat/arrayReplace choisi | Couches de config multi-env, fusion de dictionnaires i18n |
| Fusion Superficielle | Ne fusionne que le niveau supérieur | Écrasement total | Remplacement simple style Object.assign |
| Concaténer Tableau | Niveau supérieur | Concaténé en nouveau tableau | Agrégation d'API paginées, fusion de données mock |
| Remplacer Tableau | Niveau supérieur | La dernière entrée gagne | Override de config de Feature Flag |
Implémentations Courantes de Fusion JSON Comparées
| Implémentation / librairie | Langage | Comportement par défaut | Notes |
|---|---|---|---|
| Object.assign | JavaScript | Fusion superficielle | Lib standard ES2015 ; après ES2017 vous pouvez utiliser `Object.assign({}, a, b)` |
| { ...a, ...b } | JavaScript | Fusion superficielle | Opérateur spread ; syntaxe plus concise |
| lodash.merge | JavaScript | Fusion profonde | Tableaux concaténés (pas d'écrasement) ; npm install lodash.merge |
| mergedeep | Python | Fusion profonde | strategy='override' pour changer concat de tableau en replace |
| deepmerge (Python) | Python | Fusion profonde | Autre implémentation populaire ; pip install deepmerge |
| jq -s 'add' | Shell | Somme de tableaux | Fusion d'objets nécessite `reduce .[] as $i ({}; . * $i)` |
Authoritative References
- Compression JSON
- CSV vers JSON
- JSON vers CSV
- JSON Diff
- JSON Escape / Unescape
- JSON Flatten
- Formatage JSON
- Générateur JSON
- Requête JSONPath
- Fusionner JSON
- Réparer JSON
- Validateur JSON Schema
- Trier JSON
- JSON Stringify
- JSON vers HTML
- JSON vers Java
- JSON to Markdown
- JSON en SQL
- JSON vers TOML
- JSON vers TypeScript
- XML vers JSON
- JSON vers XML
- YAML vers JSON
- JSON vers YAML
- JSON vers Python
- JSON vers Go
- JSON vers Rust
- JSON vers Swift
- JSON vers C#
- JSON vers C++
- JSON vers PHP