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
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
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.
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.
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.
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.