jd is a free and open-source tool for comparing JSON or YAML values. The output (diff) is easy for humans to read and can also be used to programatically modify (patch) other values. It looks similar to the unified diff format. Read more about the diff language here.
This page is a web interface for jd. Enter two JSON values in the a.json and b.json fields and the output will be shown in the diff field. Switch the Options to patch and the diff will be applied to a.json to produce b.json. Switch the format to YAML to read and write YAML instead of JSON. The tool runs entirely in the browser and no data is sent outside the page. Its safe to use.
jd is also available as a commandline tool and a golang library. The source code is available at https://github.com/josephburnett/jd. Bug reports, questions and suggestions are welcome.