Module jakarta.json

Class JsonPatchImpl

  • All Implemented Interfaces:
    JsonPatch

    public class JsonPatchImpl
    extends Object
    implements JsonPatch
    This class is an immutable representation of a JSON Patch as specified in RFC 6902.

    A JsonPatch can be instantiated with Json.createPatch(JsonArray) by specifying the patch operations in a JSON Patch. Alternately, it can also be constructed with a JsonPatchBuilder.

    The following illustrates both approaches.

    1. Construct a JsonPatch with a JSON Patch.

    
       JsonArray contacts = ... // The target to be patched
       JsonArray patch = ...  ; // JSON Patch
       JsonPatch jsonpatch = Json.createPatch(patch);
       JsonArray result = jsonpatch.apply(contacts);
      
    2. Construct a JsonPatch with JsonPatchBuilder.
    
       JsonPatchBuilder builder = Json.createPatchBuilder();
       JsonArray result = builder.add("/John/phones/office", "1234-567")
                                 .remove("/Amy/age")
                                 .build()
                                 .apply(contacts);
      
    Since:
    1.1
    • Constructor Detail

      • JsonPatchImpl

        public JsonPatchImpl​(JsonArray patch)
        Constructs a JsonPatchImpl
        Parameters:
        patch - the JSON Patch
    • Method Detail

      • equals

        public boolean equals​(Object obj)
        Compares this JsonPatchImpl with another object.
        Overrides:
        equals in class Object
        Parameters:
        obj - the object to compare this JsonPatchImpl against
        Returns:
        true if the given object is a JsonPatchImpl with the same reference tokens as this one, false otherwise.
      • hashCode

        public int hashCode()
        Returns the hash code value for this JsonPatchImpl.
        Overrides:
        hashCode in class Object
        Returns:
        the hash code value for this JsonPatchImpl object
      • toString

        public String toString()
        Returns the JSON Patch text
        Overrides:
        toString in class Object
        Returns:
        the JSON Patch text
      • apply

        public JsonStructure apply​(JsonStructure target)
        Applies the patch operations to the specified target. The target is not modified by the patch.
        Specified by:
        apply in interface JsonPatch
        Parameters:
        target - the target to apply the patch operations
        Returns:
        the transformed target after the patch
        Throws:
        JsonException - if the supplied JSON Patch is malformed or if it contains references to non-existing members
      • toJsonArray

        public JsonArray toJsonArray()
        Description copied from interface: JsonPatch
        Returns the JsonPatch as JsonArray.
        Specified by:
        toJsonArray in interface JsonPatch
        Returns:
        this JsonPatch as JsonArray
      • diff

        public static JsonArray diff​(JsonStructure source,
                                     JsonStructure target)
        Generates a JSON Patch from the source and target JsonStructure. The generated JSON Patch need not be unique.
        Parameters:
        source - the source
        target - the target, must be the same type as the source
        Returns:
        a JSON Patch which when applied to the source, yields the target