1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
|
### jsoncons::mergepatch::apply_merge_patch
```cpp
#include <jsoncons_ext/mergepatch/mergepatch.hpp>
template <typename Json>
void apply_merge_patch(Json& target, const Json& patch);
```
Applies a merge patch to a `json` document.
#### Return value
None
#### Exceptions
None expected.
### Examples
#### Apply a JSON Merge Patch
This example is from [RFC 7386](https://datatracker.ietf.org/doc/html/rfc7386#section-3).
```cpp
#include <jsoncons/json.hpp>
#include <jsoncons_ext/mergepatch/mergepatch.hpp>
using jsoncons::json;
namespace mergepatch = jsoncons::mergepatch;
int main()
{
json doc = json::parse(R"(
{
"title": "Goodbye!",
"author" : {
"givenName" : "John",
"familyName" : "Doe"
},
"tags":[ "example", "sample" ],
"content": "This will be unchanged"
}
)");
json doc2 = doc;
json patch = json::parse(R"(
{
"title": "Hello!",
"phoneNumber": "+01-123-456-7890",
"author": {
"familyName": null
},
"tags": [ "example" ]
}
)");
mergepatch::apply_merge_patch(doc, patch);
std::cout << "(1)\n" << pretty_print(doc) << '\n';
// Create a JSON Patch
auto patch2 = mergepatch::from_diff(doc2,doc);
std::cout << "(2)\n" << pretty_print(patch2) << '\n';
mergepatch::apply_merge_patch(doc2,patch2);
std::cout << "(3)\n" << pretty_print(doc2) << '\n';
}
```
Output:
```
(1)
{
"author": {
"familyName": null
},
"phoneNumber": "+01-123-456-7890",
"tags": ["example"],
"title": "Hello!"
}
(2)
{
"author": {
"givenName": "John"
},
"content": "This will be unchanged",
"phoneNumber": "+01-123-456-7890",
"tags": ["example"],
"title": "Hello!"
}
```
|