diff --git a/v2/bench_test.go b/v2/bench_test.go index e197c21..c098987 100644 --- a/v2/bench_test.go +++ b/v2/bench_test.go @@ -19,8 +19,8 @@ func BenchmarkCreatePatch(b *testing.B) { }, { "large array", - largeArray(1000), - largeArray(1000), + largeArray(1000, "a"), + largeArray(1000, "b"), }, { "simple", @@ -40,7 +40,7 @@ func BenchmarkCreatePatch(b *testing.B) { } } -func largeArray(size int) string { +func largeArray(size int, val string) string { type nested struct { A, B string } @@ -49,7 +49,7 @@ func largeArray(size int) string { } a := example{} for i := 0; i < size; i++ { - a.Objects = append(a.Objects, nested{A: "a", B: "b"}) + a.Objects = append(a.Objects, nested{A: "a", B: val}) } res, _ := json.Marshal(a) return string(res) diff --git a/v2/jsonpatch.go b/v2/jsonpatch.go index a411d54..0d7823b 100644 --- a/v2/jsonpatch.go +++ b/v2/jsonpatch.go @@ -1,6 +1,7 @@ package jsonpatch import ( + "bytes" "encoding/json" "fmt" "reflect" @@ -64,6 +65,9 @@ func NewOperation(op, path string, value interface{}) Operation { // // An error will be returned if any of the two documents are invalid. func CreatePatch(a, b []byte) ([]Operation, error) { + if bytes.Equal(a, b) { + return []Operation{}, nil + } var aI interface{} var bI interface{} err := json.Unmarshal(a, &aI)