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 java.lang.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
java.lang.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
java.lang.NullPointerException - value is null