com.github.fge.jsonpatch.mergepatch
Class JsonMergePatch
java.lang.Object
com.github.fge.jsonpatch.mergepatch.JsonMergePatch
- All Implemented Interfaces:
- JsonSerializable
@ParametersAreNonnullByDefault
public abstract class JsonMergePatch
- extends Object
- implements JsonSerializable
Implementation of JSON Merge Patch (RFC 7386)
JSON Merge Patch is a
"toned down" version of JSON Patch. However, it covers a very large number of
use cases for JSON value modifications; its focus is mostly on patching
JSON Objects, which are by far the most common type of JSON texts exchanged
on the Internet.
Applying a JSON Merge Patch is defined by a single, pseudo code function
as follows (quoted from the RFC; indentation fixed):
define MergePatch(Target, Patch):
if Patch is an Object:
if Target is not an Object:
Target = {} # Ignore the contents and set it to an empty Object
for each Name/Value pair in Patch:
if Value is null:
if Name exists in Target:
remove the Name/Value pair from Target
else:
Target[Name] = MergePatch(Target[Name], Value)
return Target
else:
return Patch
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
BUNDLE
protected static final MessageBundle BUNDLE
JsonMergePatch
public JsonMergePatch()
fromJson
public static JsonMergePatch fromJson(JsonNode node)
throws JsonPatchException
- Build an instance from a JSON input
- Parameters:
node
- the input
- Returns:
- a JSON Merge Patch instance
- Throws:
JsonPatchException
- failed to deserialize
NullPointerException
- node is null
apply
public abstract JsonNode apply(JsonNode input)
throws JsonPatchException
- Apply the patch to a given JSON value
- Parameters:
input
- the value to patch
- Returns:
- the patched value
- Throws:
JsonPatchException
- never thrown; only for consistency with
JsonPatch
NullPointerException
- value is null