JSON for Modern C++ 2.1.1

allocator_type
array
array_t
at
at
at
at
at
at
back
back
basic_json
basic_json
basic_json
basic_json
basic_json
basic_json
basic_json
basic_json
begin
begin
boolean_t
cbegin
cend
clear
const_iterator
const_pointer
const_reference
const_reverse_iterator
count
crbegin
crend
detail::external_constructor
diff
difference_type
dump
emplace
emplace_back
empty
end
end
erase
erase
erase
erase
exception
find
find
flatten
from_cbor
from_msgpack
front
front
get
get
get
get
get
get_allocator
get_ptr
get_ptr
get_ref
get_ref
insert
insert
insert
insert
insert
insert
invalid_iterator
is_array
is_boolean
is_discarded
is_null
is_number
is_number_float
is_number_integer
is_number_unsigned
is_object
is_primitive
is_string
is_structured
iterator
iterator_wrapper
iterator_wrapper
json_serializer
max_size
meta
number_float_t
number_integer_t
number_unsigned_t
object
object_t
operator value_t
operator ValueType
operator!=
operator!=
operator!=
operator+=
operator+=
operator+=
operator+=
operator<
operator<
operator<
operator<<
operator<<
operator<=
operator<=
operator<=
operator=
operator==
operator==
operator==
operator>
operator>
operator>
operator>=
operator>=
operator>=
operator>>
operator>>
operator[]
operator[]
operator[]
operator[]
operator[]
operator[]
operator[]
operator[]
operator[]
operator[]
other_error
out_of_range
parse
parse
parse
parse
parse
parse
parse_error
parse_event_t
parser_callback_t
patch
pointer
push_back
push_back
push_back
push_back
rbegin
rbegin
reference
rend
rend
reverse_iterator
size
size_type
string_t
swap
swap
swap
swap
to_cbor
to_msgpack
type
type_error
type_name
unflatten
value
value
value
value
value_t
value_type
~basic_json
| ## ◆ 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::diff | ( | const basic_json & | source,
|  | const basic_json & | target,
|  | const std::string & | path = `""`
| ) |  |
| inline static
  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`: source.patch(diff(source, target)) == target; 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 Linear in the lengths of source and target. Example The following code shows how a JSON patch is created as a diff for two JSON values. 1 #include "json.hpp" 2 #include <iomanip> // for std::setw 3 4 using json = nlohmann::json; 5 6 int main() 7 { 8 // the source document 9 json source = R"( 10 { 11 "baz": "qux", 12 "foo": "bar" 13 } 14 )"_json; 15 16 // the target document 17 json target = R"( 18 { 19 "baz": "boo", 20 "hello": [ 21 "world" 22 ] 23 } 24 )"_json; 25 26 // create the patch 27 json patch = json::diff(source, target); 28 29 // roundtrip 30 json patched_source = source.patch(patch); 31 32 // output patch and roundtrip result 33 std::cout << std::setw(4) << patch << "\n\n" 34 << std::setw(4) << patched_source << std::endl; 35 } nlohmann::json basic_json<> json default JSON class Definition: json.hpp:13933 nlohmann::basic_json::patch basic_json patch(const basic_json &json_patch) const applies a JSON patch Definition: json.hpp:13494 nlohmann::basic_json::diff static basic_json diff(const basic_json &source, const basic_json &target, const std::string &path="") creates a diff as a JSON patch Definition: json.hpp:13786 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 13786 of file json.hpp.