Aller au contenu

Fusion profonde de JSON

Collez les documents de base et de superposition, choisissez la stratégie des tableaux et la règle de conflit, puis lisez le JSON fusionné et le journal des opérations.

Fonctionne localement dans votre navigateur
1Socle JSON2Fusion profonde3Fusionné JSON

Socle JSON
Superposition JSON

Comment fusionner deux documents JSON avec des règles de conflit et de tableaux

L’outil fusionne un document JSON de superposition dans un document de base et écrit le résultat en JSON mis en forme. Les objets sont fusionnés clé par clé, récursivement : une clé présente uniquement dans la superposition est ajoutée, et une clé présente dans les deux documents suit la règle de conflit : utiliser la valeur de superposition, conserver la valeur de base ou arrêter avec une erreur qui nomme le chemin.

Les tableaux suivent la stratégie choisie : remplacer (le tableau de superposition gagne), concaténer (les éléments de base puis ceux de la superposition), concaténer les valeurs uniques (la même chose sans doublons) ou fusionner les objets par clé (les éléments qui partagent la même valeur dans le champ clé sont fusionnés, les nouveaux sont ajoutés). Tout se passe dans le navigateur, et chaque modification est listée chemin par chemin dans Opérations de fusion.

  1. Collez le document de base dans Socle JSON et la superposition dans Superposition JSON, ou utilisez Charger un exemple pour voir un cas qui fusionne déjà un tableau par id.
  2. Choisissez la Stratégie de tableau : Remplacer le tableau, Concaténer des tableaux, Concaténer des valeurs uniques ou Fusionner des objets par clé. Le champ Clé d’objet de tableau apparaît avec la stratégie par clé et vaut id par défaut.
  3. Choisissez le Conflit scalaire : Utiliser la valeur de superposition (par défaut), Conserver la valeur de base ou Arrêtez-vous sur le conflit, qui signale le premier chemin en conflit et ne produit aucun résultat.
  4. Cliquez sur Fusionner JSON. Le panneau Fusionné JSON affiche le résultat et Opérations de fusion énumère chaque modification chemin par chemin : ajout, utiliser la valeur de superposition, conserver la valeur de base, remplacer le tableau, concaténer les tableaux, concaténer les valeurs uniques ou fusionner les objets par clé. Les indicateurs donnent le nombre d’opérations, la taille en octets et le type du résultat.
  5. Utilisez Copier ou Télécharger pour récupérer le résultat sous le nom voritools-merged.json, et Effacer pour vider les entrées, le résultat, le journal et les indicateurs. Si un document n’est pas du JSON valide, ou si la fusion par clé part sans clé, les panneaux sont vidés avant l’erreur : l’ancien résultat ne peut donc jamais être copié par erreur.

Ce que fait chaque panneau, comment les stratégies de tableaux diffèrent et ce que l’outil refuse

Objets, valeurs scalaires et conflits

Les objets sont fusionnés récursivement et les clés propres sont comparées par nom : une clé présente seulement dans la superposition est ajoutée et journalisée comme opération d’ajout. Des noms comme __proto__, constructor et prototype sont refusés côté superposition, afin qu’un document fabriqué ne puisse pas atteindre le prototype des objets. Deux valeurs scalaires différentes sont tranchées par la règle choisie : valeur de superposition, valeur de base ou une erreur telle que Conflit de fusion à $.service.retries.

Les valeurs de types différents ne sont pas converties : un nombre dans un document et un tableau sous la même clé dans l’autre comptent comme un conflit et suivent la même règle. Les valeurs identiques restent telles quelles et ne produisent aucun journal, et deux documents identiques se terminent par l’unique entrée $ : aucune modification.

Les stratégies de tableaux en pratique

Remplacer le tableau garde le tableau de superposition tel quel, même si le tableau de base était plus long. Concaténer des tableaux ajoute les éléments de superposition après ceux de la base sans supprimer les répétitions, et Concaténer des valeurs uniques écarte les doublons en comparant leur représentation JSON : ["a","b"] plus ["c","a"] donne ["a","b","c"].

Fusionner des objets par clé apparie les éléments par la valeur du champ clé : un élément de superposition {id: 1} est fusionné dans l’élément id 1 de la base au lieu d’être ajouté, et la comparaison est textuelle, donc 1 et "1" désignent le même identifiant. Les éléments sans cette clé, comme ceux qui ne sont pas des objets, sont ajoutés tels quels. Le nom de la clé est rogné : les espaces au début ou à la fin du champ sont ignorés.

Lire le résultat, confidentialité et limites

Le résultat est du JSON simple dans l’ordre produit par la fusion : d’abord les clés de base, puis les ajouts. Le journal des opérations est le moyen le plus rapide de vérifier une fusion : chaque entrée nomme le chemin modifié et, pour les tableaux par clé, utilise la forme $.users[id=1].role. Copier place le document fusionné dans le presse-papiers et Télécharger l’enregistre sous voritools-merged.json.

La fusion s’exécute entièrement dans le navigateur, sans envoi ni requête réseau : l’outil convient donc aux configurations internes et aux données de test. Il ne tranche pas les conflits à votre place et ne convertit pas les types ; face à une fusion ambiguë, il applique la règle choisie et garde la trace de ce qu’il a fait.

Outils récents :