Indépendant de l’ordre des clés
Conformément à la RFC 8259, les objets JSON ne possèdent pas d’ordre fixe. Les réorganisations cosmétiques sont ignorées.
Comparaison JSON 100% côté client
Comparez deux objets ou fichiers JSON et identifiez immédiatement les valeurs ajoutées, supprimées et modifiées.
Moteur de comparaison structurelle
Les outils de diff textuels échouent lorsque les clés sont réordonnées ou le JSON minifié. Notre comparateur évalue les arbres syntaxiques réels.
Conformément à la RFC 8259, les objets JSON ne possèdent pas d’ordre fixe. Les réorganisations cosmétiques sont ignorées.
Parcourt tous les niveaux d’objets et de tableaux pour fournir le chemin exact de chaque modification.
Comparez par indice ou en ensemble non ordonné pour analyser les réponses d’API dont le tri n’est pas garanti.
Comparer des documents JSON avec des outils en ligne de commande basés sur le texte (comme git diff) échoue souvent car l’indentation et l’ordre des clés peuvent changer sans modifier les données réelles.
Notre moteur de diff structurel résout ce problème en trois étapes automatisées :
Selon la spécification officielle RFC 8259, un objet JSON est un ensemble non ordonné de paires nom/valeur. Ainsi, {"a": 1, "b": 2} et {"b": 2, "a": 1} représentent exactement la même information.
Par défaut, notre outil active l’option Ignorer l’ordre des clés afin de ne pas encombrer votre rapport. Si votre application exige un ordre strict, décochez simplement l’option.
Contrairement aux clés, les éléments d’un tableau JSON sont ordonnés par définition. Toutefois, dans de nombreuses APIs REST, les tableaux représentent des ensembles sans ordre significatif.
Notre outil propose une option Ignorer l’ordre des tableaux. Activée, elle associe les éléments par égalité profonde quelle que soit leur place, évitant de fausses alertes si un élément est inséré au début.
Une fois la comparaison terminée, téléchargez un rapport complet au format JSON Patch (RFC 6902) ou un journal Markdown pour vos revues de code. Tout s’exécute localement dans votre navigateur pour une confidentialité totale.
Si vous devez automatiser la comparaison dans vos tests ou pipelines CI/CD, voici les méthodes standards :
import json
from deepdiff import DeepDiff
# Load JSON files or API responses
with open('original.json') as f1, open('modified.json') as f2:
original_data = json.load(f1)
modified_data = json.load(f2)
# Deep structural diff with key-order independence
differences = DeepDiff(original_data, modified_data, ignore_order=False)
print("Added keys:", differences.get('dictionary_item_added', {}))
print("Removed keys:", differences.get('dictionary_item_removed', {}))
print("Values changed:", differences.get('values_changed', {}))
print("Type changes:", differences.get('type_changes', {}))import fs from 'node:fs';
import { compare } from 'fast-json-patch';
// Read and parse documents locally
const original = JSON.parse(fs.readFileSync('original.json', 'utf8'));
const modified = JSON.parse(fs.readFileSync('modified.json', 'utf8'));
// Generate standard RFC 6902 JSON patch differences
const delta = compare(original, modified);
console.log('Structured differences:', delta);
// Output: [ { op: 'replace', path: '/user/age', value: 26 }, ... ]Dans les terminaux Unix et macOS, normalisez l’ordre des clés avec jq -S avant d’exécuter diff :
# Sort keys alphabetically with jq, then run unified diff
diff -u <(jq -S . original.json) <(jq -S . modified.json)Besoin de nettoyer votre JSON avant de comparer ? Utilisez notre Formateur JSON, diagnostiquez la syntaxe avec le Validateur JSON, ou convertissez en tableur avec notre Convertisseur JSON en CSV.
FAQ
Le diff JSON analyse la structure arborescente (AST) au lieu des lignes de texte brut. Il évite les faux positifs causés par la réorganisation des clés ou les différences d’indentation.
Oui, par défaut. Selon la spécification RFC 8259, les objets JSON ne possèdent pas d’ordre sémantique : {"a":1,"b":2} et {"b":2,"a":1} sont donc considérés comme identiques.
Non. La conversion s’exécute entièrement dans un Web Worker au sein de votre navigateur : le fichier ne quitte jamais votre appareil. Vous pouvez le constater vous-même : ouvrez les outils de développement (DevTools), affichez l’onglet Réseau (Network) et lancez une conversion. Aucune requête n’est émise. C’est aussi pourquoi il n’y a aucune limite de taille ni quota.
Non. Les données sont lues par blocs (chunks) et écrites en flux continu (stream), ce qui maintient l’utilisation de la mémoire stable quel que soit le volume. La limite pratique est celle de votre machine, mesurée en gigaoctets plutôt qu’en mégaoctets.
C’est entièrement gratuit, sans inscription, sans période d’essai et sans formule payante. Toutes les fonctionnalités sont disponibles sans aucune restriction.