Skip to content

thsutton/aeson-diff

Folders and files

NameName
Last commit message
Last commit date

Latest commit

1d247f4 · Jun 22, 2021
May 22, 2020
Sep 21, 2017
May 2, 2019
Mar 30, 2015
Jan 11, 2016
Apr 6, 2016
Oct 3, 2019
May 15, 2018
Nov 16, 2014
May 15, 2018
Nov 16, 2014
Jun 22, 2021
Oct 3, 2019

Repository files navigation

Aeson Diff

Build Status Hackage Hackage-Deps

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 -> Patch examines source and target JSON Values and constructs a new Patch describing the changes.

  • patch :: Patch -> Value -> Result Value applies the changes in a Patch to a JSON Value. If an error results then an exception is thrown.

For more complete information, see the documentation.