|
◆ diff()
template< template< typename U, typename V, typename... Args > class ObjectType = std::map, template< typename U, typename... Args > class ArrayType = std::vector, class StringType = std::string, class BooleanType = bool, class NumberIntegerType = std::int64_t, class NumberUnsignedType = std::uint64_t, class NumberFloatType = double, template< typename U > class AllocatorType = std::allocator, template< typename T, typename SFINAE= void > class JSONSerializer = adl_serializer>
static basic_json nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer >::diff |
( |
const basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer > & |
source, |
|
|
const basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer > & |
target, |
|
|
const std::string & |
path = "" |
|
) |
| |
|
inlinestatic |
Creates a JSON Patch so that value source can be changed into the value target by calling patch function.
- Invariant
- For two JSON values source and target, the following code yields always
true :
static basic_json array(std::initializer_list< basic_json > init=std::initializer_list< basic_json >()) explicitly create an array from an initializer list
static basic_json diff(const basic_json &source, const basic_json &target, const std::string &path="") creates a diff as a JSON patch
basic_json patch(const basic_json &json_patch) const applies a JSON patch
- Note
- Currently, only
remove , add , and replace operations are generated.
- Parameters
-
[in] | source | JSON value to compare from |
[in] | target | JSON value to compare against |
[in] | path | helper value to create JSON pointers |
- Returns
- a JSON patch to convert the source to target
- Complexity\n Linear in the lengths of source and target.
- Example\n The following code shows how a JSON patch is created as a
- diff for two JSON values.
32 std::cout << std::setw(4) << patch << "\n\n"
a class to store JSON values
basic_json<> json default JSON class
Output (play with this example online):
[
{
"op": "replace",
"path": "/baz",
"value": "boo"
},
{
"op": "remove",
"path": "/foo"
},
{
"op": "add",
"path": "/hello",
"value": [
"world"
]
}
]
{
"baz": "boo",
"hello": [
"world"
]
}
The example code above can be translated with g++ -std=c++11 -Isrc doc/examples/diff.cpp -o diff
- See also
- patch – apply a JSON patch
-
RFC 6902 (JSON Patch)
- Since
- version 2.0.0
Definition at line 12222 of file json.hpp.
|