JsonDiffPatch is a library that allows for the diffing and patching of JSON objects.
npm install json-diff-patch-v2
import { DiffPatcher } from 'json-diff-patch-v2';
DiffPatcher
instance:const diffPatcher = new DiffPatcher();
diff
, patch
, and reverse
methods to work with your JSON objects: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)