29 lines
815 B
Markdown
29 lines
815 B
Markdown
|
# JSON Patch
|
||
|
|
||
|
On top of this, **JSON Patch** ([RFC 6902](https://tools.ietf.org/html/rfc6902)) allows to describe differences between two JSON values - effectively allowing patch and diff operations known from Unix.
|
||
|
|
||
|
```cpp
|
||
|
|
||
|
// a JSON patch (RFC 6902)
|
||
|
json j_patch = R"([
|
||
|
{ "op": "replace", "path": "/baz", "value": "boo" },
|
||
|
{ "op": "add", "path": "/hello", "value": ["world"] },
|
||
|
{ "op": "remove", "path": "/foo"}
|
||
|
])"_json;
|
||
|
|
||
|
// apply the patch
|
||
|
json j_result = j_original.patch(j_patch);
|
||
|
// {
|
||
|
// "baz": "boo",
|
||
|
// "hello": ["world"]
|
||
|
// }
|
||
|
|
||
|
// calculate a JSON patch from two JSON values
|
||
|
json::diff(j_result, j_original);
|
||
|
// [
|
||
|
// { "op":" replace", "path": "/baz", "value": ["one", "two", "three"] },
|
||
|
// { "op": "remove","path": "/hello" },
|
||
|
// { "op": "add", "path": "/foo", "value": "bar" }
|
||
|
// ]
|
||
|
```
|