Interface JSONDelta
public interface JSONDelta
Structural delta type for
JSON.
A JSONDelta describes the differences between two JSON values. Unlike a
binary delta, a
structural delta can be queried to determine its effect. The
removed() and inserted() methods provide full details of
the differences between the two values.
An instance can be created from two JSON values using
JSON.diff(JSON).
JSONDeltas are useful for identifying small changes to complex JSON values.
Here's any example of how to use this class to filter interesting changes in
a ValueStream.
public class ExampleStream implements ValueStream<JSON> {
public void onValue(String topicPath, JSON oldValue, JSON newValue) {
JSONDelta delta = newValue.diff(oldValue);
if (!delta.removed().intersection("/address").isEmpty() ||
!delta.inserted().intersection("/address").isEmpty()) {
// The "address" field has changed.
processAddress(newValue);
}
}
// ...
}
- Since:
- 5.7
- Author:
- DiffusionData Limited
-
Nested Class Summary
Nested ClassesModifier and TypeInterfaceDescriptionstatic interfaceAn unmodifiable map describing the changes to a JSON value. -
Method Summary
Modifier and TypeMethodDescriptionbooleanReturns whether the two JSON values used to create this instance are different.inserted()Returns the parts of the second JSON value not found in the first JSON value.removed()Returns the parts of the first JSON value not found in the second JSON value.
-
Method Details
-
removed
JSONDelta.ChangeMap removed()Returns the parts of the first JSON value not found in the second JSON value.- Returns:
- the removed parts. The JSON Pointer references used for the keys are relative to first JSON value.
-
inserted
JSONDelta.ChangeMap inserted()Returns the parts of the second JSON value not found in the first JSON value.- Returns:
- the removed parts. The JSON Pointer references used for the keys are relative to second JSON value.
-
hasChanges
boolean hasChanges()Returns whether the two JSON values used to create this instance are different. It is equivalent to {!@code inserted().isEmpty() || !removed().isEmpty()}.- Returns:
- true if this delta has an effect
-