Class JsonPatch


  • public final class JsonPatch
    extends Object
    Processes partial modifications to JSON values.
    • Field Detail

      • OP_PTR

        public static final JsonPointer OP_PTR
        Path to the "op" attribute of a patch entry. Required.
      • PATH_PTR

        public static final JsonPointer PATH_PTR
        Path to the "path" attribute of a patch entry. Required.
      • FROM_PTR

        public static final JsonPointer FROM_PTR
        Path to the "from" attribute of a patch entry. Required only for "move" and "copy" operations. Ignored for all others.
      • VALUE_PTR

        public static final JsonPointer VALUE_PTR
        Path to the "value" attribute of a patch entry. Required for "add", "replace" and "test" operations; Ignored for all others. This is public to allow for alternate implementations of JsonPatchValueTransformer.
    • Method Detail

      • diff

        public static JsonValue diff​(JsonValue original,
                                     JsonValue target)
        Compares two JSON values, and produces a JSON Patch value, which contains the operations necessary to modify the original value to arrive at the target value.
        Parameters:
        original - the original value.
        target - the intended target value.
        Returns:
        the resulting JSON Patch value.
        Throws:
        NullPointerException - if either of original or target are null.
      • merge

        public static JsonValue merge​(JsonValue first,
                                      JsonValue second)
        Creates a new JSON value which combines the contents two JSON values.

        If there are any matching pointers in the two JSON values, then the value in second overrides the value in the first.

        Parameters:
        first - the first JSON value.
        second - the second JSON value.
        Returns:
        a new JSON value which combines the contents of first and second.
        Throws:
        NullPointerException - if either of first or second are null.
      • isEqual

        public static boolean isEqual​(JsonValue value,
                                      JsonValue other)
        Compares two JSON values, and returns whether the two objects are identical. Fails fast in that a false is returned as soon as a difference is detected.
        Parameters:
        value - a value.
        other - another value.
        Returns:
        whether the two inputs are equal.
        Throws:
        NullPointerException - if either of value or other are null.
        IllegalArgumentException - if the JsonValue contains non-JSON primitive values.
      • patch

        public static void patch​(JsonValue original,
                                 JsonValue patch)
        Applies a set of modifications in a JSON patch value to an original value, resulting in the intended target value. In the event of a failure, this method does not revert any modifications applied up to the point of failure.
        Parameters:
        original - the original value on which to apply the modifications.
        patch - the JSON Patch value, specifying the modifications to apply to the original value.
        Throws:
        JsonValueException - if application of the patch failed.
      • patch

        public static void patch​(JsonValue original,
                                 JsonValue patch,
                                 JsonPatchValueTransformer transform)
        Applies a set of modifications in a JSON patch value to an original value, resulting in the intended target value. In the event of a failure, this method does not revert any modifications applied up to the point of failure.
        Parameters:
        original - the original value on which to apply the modifications.
        patch - the JSON Patch value, specifying the modifications to apply to the original value.
        transform - a custom transform used to determine the target value.
        Throws:
        JsonValueException - if application of the patch failed.