1c5f01b2fSopenharmony_ci#include <iostream>
2c5f01b2fSopenharmony_ci#include <iomanip>
3c5f01b2fSopenharmony_ci#include <nlohmann/json.hpp>
4c5f01b2fSopenharmony_ci
5c5f01b2fSopenharmony_ciusing json = nlohmann::json;
6c5f01b2fSopenharmony_ciusing namespace nlohmann::literals;
7c5f01b2fSopenharmony_ci
8c5f01b2fSopenharmony_ciint main()
9c5f01b2fSopenharmony_ci{
10c5f01b2fSopenharmony_ci    // the source document
11c5f01b2fSopenharmony_ci    json source = R"(
12c5f01b2fSopenharmony_ci        {
13c5f01b2fSopenharmony_ci            "baz": "qux",
14c5f01b2fSopenharmony_ci            "foo": "bar"
15c5f01b2fSopenharmony_ci        }
16c5f01b2fSopenharmony_ci    )"_json;
17c5f01b2fSopenharmony_ci
18c5f01b2fSopenharmony_ci    // the target document
19c5f01b2fSopenharmony_ci    json target = R"(
20c5f01b2fSopenharmony_ci        {
21c5f01b2fSopenharmony_ci            "baz": "boo",
22c5f01b2fSopenharmony_ci            "hello": [
23c5f01b2fSopenharmony_ci                "world"
24c5f01b2fSopenharmony_ci            ]
25c5f01b2fSopenharmony_ci        }
26c5f01b2fSopenharmony_ci    )"_json;
27c5f01b2fSopenharmony_ci
28c5f01b2fSopenharmony_ci    // create the patch
29c5f01b2fSopenharmony_ci    json patch = json::diff(source, target);
30c5f01b2fSopenharmony_ci
31c5f01b2fSopenharmony_ci    // roundtrip
32c5f01b2fSopenharmony_ci    json patched_source = source.patch(patch);
33c5f01b2fSopenharmony_ci
34c5f01b2fSopenharmony_ci    // output patch and roundtrip result
35c5f01b2fSopenharmony_ci    std::cout << std::setw(4) << patch << "\n\n"
36c5f01b2fSopenharmony_ci              << std::setw(4) << patched_source << std::endl;
37c5f01b2fSopenharmony_ci}
38