Skip to content
jsoncsvonline

Comparaison JSON 100% côté client

Différence JSON

Comparez deux objets ou fichiers JSON et identifiez immédiatement les valeurs ajoutées, supprimées et modifiées.

  • Zéro téléversement : comparaison strictement dans votre navigateur
  • Diff structurel profond sur les objets et tableaux imbriqués
  • Gestion intelligente de l’ordre des clés et des options de tableaux
Array comparison:
JSON original (Gauche) (Left / Before)
JSON modifié (Droite) (Right / After)

Moteur de comparaison structurelle

Repérez les vraies différences de données, pas le bruit des lignes.

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.

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.

Diff structurel récursif profond

Parcourt tous les niveaux d’objets et de tableaux pour fournir le chemin exact de chaque modification.

Comparaison intelligente des tableaux

Comparez par indice ou en ensemble non ordonné pour analyser les réponses d’API dont le tri n’est pas garanti.

Comment comparer des fichiers JSON en ligne

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 :

  1. Normalisation syntaxique : Les deux documents sont analysés en représentations mémoire selon la norme RFC 8259.
  2. Parcours récursif par chemin : Chaque paire clé-valeur et élément de tableau reçoit un chemin JSON explicite (ex. users[0].address.city).
  3. Sortie des deltas catégorisés : Les ajouts, suppressions et modifications de valeurs ou de types sont isolés et mis en valeur visuellement.

Gestion de l’ordre des clés (Conformité RFC 8259)

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.

Comparaison des tableaux : ordonnés vs non ordonnés

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.

Export et partage des rapports de diff

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.

Comparer du JSON par programme en Python et Node.js

Si vous devez automatiser la comparaison dans vos tests ou pipelines CI/CD, voici les méthodes standards :

Python (DeepDiff)

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', {}))

Node.js / TypeScript (fast-json-patch)

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 }, ... ]

Diff JSON en ligne de commande avec jq et diff

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

Foire aux questions

Qu’est-ce que le JSON Diff et en quoi diffère-t-il d’un diff textuel ?

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.

L’ordre des clés d’objet est-il ignoré ?

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.

Mes données sont-elles envoyées sur un serveur ?

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.

Y a-t-il une limite de taille de fichier ?

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.

Est-ce gratuit et faut-il créer un compte ?

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.

Convertisseurs et outils associés