Aeson Diff
 
 

This is a small library for working with changes to JSON documents. It
includes a library and two executables in the style of diff(1) and
patch(1). Patches are themselves JSON Patch documents as specified in
RFC 6902.
Installing
The aeson-diff package is written in Haskell and can be installed using the
Cabal package management tool, stack, or something similar.
stack install aeson-diff
The command-line tools can then be executed using stack:
stack exec json-diff -- ....
stack exec json-patch -- ....
If you prefer to use Cabal, something like this might do the trick:
cd aeson-diff/
cabal sandbox init
cabal install --dependencies-only
cabal build
sudo mkdir -p /usr/local/bin
sudo cp dist/build/json-*/json-{diff,patch} /usr/local/bin/
Usage
Patch format
aeson-diff supports the JSON Patch format described in
RFC 6902.
json-diff command
The json-diff command compares two JSON documents and extracts a patch
describing the differences between the first document and the second.
Usage: json-diff [-T|--test-before-remove] [-o|--output OUTPUT] FROM TO
Generate a patch between two JSON documents.
Available options:
    -h,--help                Show this help text
    -T,--test-before-remove  Include a test before each remove.
    -o,--output OUTPUT       Write patch to file OUTPUT.
json-patch command
The json-patch command applies a patch describing changes to be made to
a JSON document.
Usage: json-patch [-o|--output OUTPUT] PATCH FROM
Generate a patch between two JSON documents.
Available options:
  -h,--help                Show this help text
  -o,--output OUTPUT       Destination for patched JSON.
  PATCH                    Patch to apply.
  FROM                     JSON file to patch.
aeson-diff library
The aeson-diff library exports as single module: Data.Aeson.Diff. This
exports diff and patch functions which do exactly what might be expected:
- 
diff :: Value -> Value -> Patchexamines source and target JSONValues
and constructs a newPatchdescribing the changes.
 
- 
patch :: Patch -> Value -> Result Valueapplies the changes in aPatchto a JSONValue. If an error results then an exception is thrown.
 
For more complete information, see the documentation.