json_patch: add first implementation only with patch application
Initially I wanted to also do a function that generates the JSON patch from two JSON documents, but even just applying the JSON patch was a bit of work, especially when needing to satisfy all the test-cases. This change defines all the operation in the RFC6902. The addition isn't too big (for the json_patch_apply() function), as part of the heavy lifting is also done by JSON pointer logic. All the ops were tested with the test-cases defined at: https://github.com/json-patch/json-patch-tests RFC6902: https://tools.ietf.org/html/rfc6902 Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
This commit is contained in:
committed by
Eric Hawicz
parent
e4d9fbd52a
commit
538b046884
@@ -88,7 +88,8 @@ option(ENABLE_RDRAND "Enable RDRAND Hardware RNG Hash Seed."
|
||||
option(ENABLE_THREADING "Enable partial threading support." OFF)
|
||||
option(OVERRIDE_GET_RANDOM_SEED "Override json_c_get_random_seed() with custom code." OFF)
|
||||
option(DISABLE_EXTRA_LIBS "Avoid linking against extra libraries, such as libbsd." OFF)
|
||||
option(DISABLE_JSON_POINTER "Disable JSON pointer (RFC6901) support." OFF)
|
||||
option(DISABLE_JSON_POINTER "Disable JSON pointer (RFC6901) and JSON patch support." OFF)
|
||||
option(DISABLE_JSON_PATCH "Disable JSON patch (RFC6902) support." OFF)
|
||||
option(NEWLOCALE_NEEDS_FREELOCALE "Work around newlocale bugs in old FreeBSD by calling freelocale" OFF)
|
||||
|
||||
|
||||
@@ -429,8 +430,15 @@ if (NOT DISABLE_JSON_POINTER)
|
||||
set(JSON_C_PUBLIC_HEADERS ${JSON_C_PUBLIC_HEADERS} ${PROJECT_SOURCE_DIR}/json_pointer.h)
|
||||
set(JSON_C_SOURCES ${JSON_C_SOURCES} ${PROJECT_SOURCE_DIR}/json_pointer.c)
|
||||
set(JSON_H_JSON_POINTER "#include \"json_pointer.h\"")
|
||||
|
||||
if (NOT DISABLE_JSON_PATCH)
|
||||
set(JSON_C_PUBLIC_HEADERS ${JSON_C_PUBLIC_HEADERS} ${PROJECT_SOURCE_DIR}/json_patch.h)
|
||||
set(JSON_C_SOURCES ${JSON_C_SOURCES} ${PROJECT_SOURCE_DIR}/json_patch.c)
|
||||
set(JSON_H_JSON_PATCH "#include \"json_patch.h\"")
|
||||
endif()
|
||||
else()
|
||||
set(JSON_H_JSON_POINTER "")
|
||||
set(JSON_H_JSON_PATCH "")
|
||||
endif()
|
||||
|
||||
configure_file(json.h.cmakein ${PROJECT_BINARY_DIR}/json.h @ONLY)
|
||||
|
||||
Reference in New Issue
Block a user