- Discarded values: the legacy macro only changes <= and >=; != is true by default
- Out-of-range numbers are rejected while parsing, not stored as NaN
- merge_diff round trip: point to the ordered_json caveat
- ensure_ascii example shows the escaped output
- out_of_range.405 is thrown for "remove"/"move" on the root, not "add"
- CBOR stores binary subtypes as tags
- Integer/float comparison uses exact values, not conversion
- diff, flatten, and the binary writers are depth-bounded
- FAQ: max_digits10 for serialization, trailing commas are supported
- out_of_range.407 is still thrown by to_bon8
- FetchContent_MakeAvailable needs CMake 3.14
- json_fwd.hpp contents, operator< link, RFC 7396 for merge patch
- README: dump() wording, merge_diff, MSYS2/build2, patch comment typos,
operator[] link, embedded CMake example aligned with the docs
Signed-off-by: Niels Lohmann <mail@nlohmann.me>
* support JSON Merge Patch (RFC 7396) diff creation
The JSON merge patch document format describes the set of modifications
to a resource's content, that more closely mimics the syntax of the
resource being modified.
However, and in contrast to JSON Patch (RFC 6902), a JSON Merge Patch
cannot express certain modifications, e.g., changing an array element
at a specific index, or setting a specific object value to null.
The null value in a JSON Merge Patch is used to remove the key from the
object.
The diff algorithm is not part of the RFC 7396, but it was tested
against all examples provided, plus additional cases on how null values
are handled.
Signed-off-by: Luís Murta <luis@murta.dev>
* improve algorithm efficiency
Signed-off-by: Luís Murta <luis@murta.dev>
* fix inconsistent nulls and empty arrays
Also add CHECKs for the patch, documentation and run `make amalgamate`.
Signed-off-by: Luís Murta <luis@murta.dev>
* documentation cleanups
Signed-off-by: Luís Murta <luis@murta.dev>
* add an iterative fallback to merge_diff
Bound the recursion depth like diff() and merge_patch(), and test values
nested past the bound.
Signed-off-by: Luís Murta <luis@murta.dev>
* address the remaining review comments
Signed-off-by: Luís Murta <luis@murta.dev>
* move multi-line raw strings out of CHECK macros
GCC 4.8/5, ICPC and NVHPC mis-tokenize multi-line raw string literals
inside macro arguments, breaking the build or the parsed JSON.
Signed-off-by: Luís Murta <luis@murta.dev>
---------
Signed-off-by: Luís Murta <luis@murta.dev>