rfc_6902 0.3.0
SDKdartflutter
Platformandroidioswindowslinuxmacosweb
JSON Patch (RFC 6902). Implements Add, Copy, Move, Remove, Replace, Test operations on JSON documents using JSON Pointers.
RFC 6902 JSON Patch
JSON Patch (RFC 6902) implementation in Dart.
Building and encoding to JSON
import 'dart:convert';
import 'package:rfc_6902/rfc_6902.dart';
void main() {
final patch = JsonPatch.build([
Test(JsonPointer('/a/b/c'), 'foo'),
Remove(JsonPointer('/a/b/c')),
Add(JsonPointer('/a/b/c'), ['foo', 'bar']),
Replace(JsonPointer('/a/b/c'), 42),
Move(JsonPointer('/a/b/c'), JsonPointer('/a/b/d')),
Copy(JsonPointer('/a/b/d'), JsonPointer('/a/b/e')),
]);
print(jsonEncode(patch));
}
produces
[
{"op":"test","path":"/a/b/c","value":"foo"},
{"op":"remove","path":"/a/b/c"},
{"op":"add","path":"/a/b/c","value":["foo","bar"]},
{"op":"replace","path":"/a/b/c","value":42},
{"op":"move","from":"/a/b/c","path":"/a/b/d"},
{"op":"copy","from":"/a/b/d","path":"/a/b/e"}
]
Parsing JSON and applying to the document
import 'dart:convert';
import 'package:rfc_6902/rfc_6902.dart';
void main() {
const document = {
'a': {
'b': {'c': 'foo'}
}
};
const json = '''
[
{ "op": "test", "path": "/a/b/c", "value": "foo" },
{ "op": "remove", "path": "/a/b/c" },
{ "op": "add", "path": "/a/b/c", "value": [ "foo", "bar" ] },
{ "op": "replace", "path": "/a/b/c", "value": 42 },
{ "op": "move", "from": "/a/b/c", "path": "/a/b/d" },
{ "op": "copy", "from": "/a/b/d", "path": "/a/b/e" }
]
''';
final patch = JsonPatch(jsonDecode(json));
final result = patch.applyTo(document);
print(result); // {a: {b: {d: 42, e: 42}}}
}