Documentation
¶
Overview ¶
Package gojsondiff implements "Diff" that compares two JSON objects and generates Deltas that describes differences between them. The package also provides "Patch" that apply Deltas to a JSON object.
Index ¶
- type Added
- type Array
- type Deleted
- type Delta
- type Diff
- type Differ
- func (differ *Differ) ApplyPatch(json map[string]interface{}, patch Diff)
- func (differ *Differ) Compare(left []byte, right []byte) (Diff, error)
- func (differ *Differ) CompareArrays(left []interface{}, right []interface{}) Diff
- func (differ *Differ) CompareObjects(left map[string]interface{}, right map[string]interface{}) Diff
- type Index
- type Modified
- type Moved
- type Name
- type Object
- type Position
- type PostDelta
- type PreDelta
- type TextDiff
- type Unmarshaller
- func (um *Unmarshaller) UnmarshalBytes(diffBytes []byte) (Diff, error)
- func (um *Unmarshaller) UnmarshalObject(diffObj map[string]interface{}) (Diff, error)
- func (um *Unmarshaller) UnmarshalReader(diffReader io.Reader) (Diff, error)
- func (um *Unmarshaller) UnmarshalString(diffString string) (Diff, error)
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Added ¶
type Added struct {
// Values holds the added value
Value interface{}
// contains filtered or unexported fields
}
An Added represents a new added field of an object or an array
func (Added) PostPosition ¶
func (i Added) PostPosition() Position
func (Added) Similarity ¶
func (cache Added) Similarity() (similarity float64)
type Array ¶
type Array struct {
// Deltas holds internal Deltas
Deltas []Delta
// contains filtered or unexported fields
}
An Array is a Delta that represents an array of JSON
func (Array) PostPosition ¶
func (i Array) PostPosition() Position
func (Array) Similarity ¶
func (cache Array) Similarity() (similarity float64)
type Deleted ¶
type Deleted struct {
// The value deleted
Value interface{}
// contains filtered or unexported fields
}
A Delted represents deleted field or index of an Object or an Array.
func NewDeleted ¶
NewDeleted returns a Deleted
func (Deleted) PrePosition ¶
func (i Deleted) PrePosition() Position
func (Deleted) Similarity ¶
type Delta ¶
type Delta interface {
// Similarity calculates the similarity of the Delta values.
// The return value is normalized from 0 to 1,
// 0 is completely different and 1 is they are same
Similarity() (similarity float64)
}
A Delta represents an atomic difference between two JSON objects.
type Diff ¶
type Diff interface {
// Deltas returns Deltas that describe differences between two JSON objects
Deltas() []Delta
// Modified returnes true if Diff has at least one Delta.
Modified() bool
}
A Diff holds deltas generated by a Differ
type Differ ¶
type Differ struct {
// contains filtered or unexported fields
}
A Differ conmapres JSON objects and apply patches
func (*Differ) ApplyPatch ¶
ApplyPatch applies a Diff to an JSON object. This method is destructive.
func (*Differ) CompareArrays ¶
CompareArrays compares two JSON arrays as []interface{} and return a Diff object.
type Index ¶
type Index int
A Index is a Position with an int value, which means the Delta is in an Array.
type Modified ¶
type Modified struct {
// The value before modification
OldValue interface{}
// The value after modification
NewValue interface{}
// contains filtered or unexported fields
}
A Modified represents a field whose value is changed.
func NewModified ¶
NewModified returns a Modified
func (Modified) PostPosition ¶
func (i Modified) PostPosition() Position
func (Modified) Similarity ¶
func (cache Modified) Similarity() (similarity float64)
type Moved ¶
type Moved struct {
// The value before moving
Value interface{}
// The delta applied after moving (for compatibility)
Delta interface{}
// contains filtered or unexported fields
}
A Moved represents field that is moved, which means the index or name is changed. Note that, in this library, assigning a Moved and a Modified to a single position is not allowed. For the compatibility with jsondiffpatch, the Moved in this library can hold the old and new value in it.
func (Moved) PostPosition ¶
func (i Moved) PostPosition() Position
func (Moved) PrePosition ¶
func (i Moved) PrePosition() Position
func (Moved) Similarity ¶
func (cache Moved) Similarity() (similarity float64)
type Name ¶
type Name string
A Name is a Postition with a string, which means the delta is in an object.
type Object ¶
type Object struct {
// Deltas holds internal Deltas
Deltas []Delta
// contains filtered or unexported fields
}
An Object is a Delta that represents an object of JSON
func (Object) PostPosition ¶
func (i Object) PostPosition() Position
func (Object) Similarity ¶
func (cache Object) Similarity() (similarity float64)
type Position ¶
type Position interface {
// String returns the position as a string
String() (name string)
// CompareTo returns a true if the Position is smaller than another Position.
// This function is used to sort Positions by the sort package.
CompareTo(another Position) bool
}
A Position represents the position of a Delta in an object or an array.
type PostDelta ¶
type PostDelta interface {
// PostPosition returns the Position.
PostPosition() Position
// PostApply applies the delta to object.
PostApply(object interface{}) interface{}
}
A PreDelta is a Delta that has a position of the right side JSON object. Deltas implements this interface should be applies after PreDeltas.
type PreDelta ¶
type PreDelta interface {
// PrePosition returns the Position.
PrePosition() Position
// PreApply applies the delta to object.
PreApply(object interface{}) interface{}
}
A PreDelta is a Delta that has a position of the left side JSON object. Deltas implements this interface should be applies before PostDeltas.
type TextDiff ¶
A TextDiff represents a Modified with TextDiff between the old and the new values.
func NewTextDiff ¶
NewTextDiff returns
func (*TextDiff) DiffString ¶
func (TextDiff) PostPosition ¶
func (i TextDiff) PostPosition() Position
func (TextDiff) Similarity ¶
func (cache TextDiff) Similarity() (similarity float64)
type Unmarshaller ¶
type Unmarshaller struct {
}
func NewUnmarshaller ¶
func NewUnmarshaller() *Unmarshaller
func (*Unmarshaller) UnmarshalBytes ¶
func (um *Unmarshaller) UnmarshalBytes(diffBytes []byte) (Diff, error)
func (*Unmarshaller) UnmarshalObject ¶
func (um *Unmarshaller) UnmarshalObject(diffObj map[string]interface{}) (Diff, error)
func (*Unmarshaller) UnmarshalReader ¶
func (um *Unmarshaller) UnmarshalReader(diffReader io.Reader) (Diff, error)
func (*Unmarshaller) UnmarshalString ¶
func (um *Unmarshaller) UnmarshalString(diffString string) (Diff, error)