JsonDiffPatch is a library that allows for the diffing and patching of JSON objects.
npm install json-diff-patch-v2
- Import JsonDiffPatch in your project:
import { DiffPatcher } from 'json-diff-patch-v2';
- Create a
DiffPatcherinstance:
const diffPatcher = new DiffPatcher();
- Use the
diff,patch, andreversemethods to work with your JSON objects:
- Diff: To find the difference between two objects.
- Patch: To apply a patch to an object.
- Reverse: To reverse a patch.
const left = { name: 'John', age: 25 }; const right = { name: 'John', age: 26 }; const delta = diffPatcher.diff(left, right); console.log(delta); // Output: { age: [25, 26] }
const original = { name: 'John', age: 25 }; const delta = { age: [25, 26] }; const patched = diffPatcher.patch(original, delta); console.log(patched); // Output: { name: 'John', age: 26 }
In scenarios where you want to ignore certain properties during diffing, you can use the propertyFilter option.
const options = { propertyFilter: function(name) { return name.slice(0, 1) !== '$'; }, }; const diffPatcherWithFilter = new DiffPatcher(options); const left = { data: { $volatile: 123, stable: 456 } }; const right = { data: { $volatile: 124, stable: 456 } }; const delta = diffPatcherWithFilter.diff(left, right); console.log(delta); // Output: undefined (since the change is in a filtered property)