json_diff 0.1.0
json_diff: ^0.1.0 copied to clipboard
Utilities for diffing two JSON objects
JSON Diff #
Generate a diff between two JSON strings.
Usage #
Here's a basic example which features a deleted object, a new object, and a changed object:
import 'package:json_diff/json_diff.dart';
Map<String,Object> left = '{"a": 2, "b": 3, "c": 5, "d": {"x": 4, "y": 8}}';
Map<String,Object> right = '{"b": 7, "c": 5, "d": {"x": 4, "z": 16}, "e": 11}';
differ = new JsonDiffer(left, right);
DiffNode diff = differ.diff();
diff.added // => {"e": 11}
diff.removed // => {"a": 2}
diff.changed // => {"b": [3, 7]}
diff.node // => a Map<String,DiffNode>
diff.node['a'] // => a DiffNode
diff.node['a'].added // => {"z": 16}
diff.node['a'].removed // => {"y": 8}
So that's pretty fun. So when you diff two JSON strings, you get back a DiffNode. A DiffNode is a heirarchical structure that vaguely mirrors the structure of the input JSON strings. In this example, the top-level DiffNode we got back has
- an
addedproperty, which is a Map of top-level properties that were not found inleft, and were found inright. - a
removedproperty, which is a Map of top-level properties that were found inleft, but werenotfound inright. - a
changedproperty, which is a Map of top-level properties whose values are different inleftand inright. The values in this Map are two-element Arrays. The 0th element is the old value (fromleft), and the 1st element is the new value (fromright). - a
nodeproperty, a Map of the properties found in bothleftandrightthat have deep differences. The values of this Map are more DiffNodes.
Contributing #
Contributions welcome! Please read the contribution guidelines.
Disclaimer #
This is not an official Google product.