From 626d213c80950eaaca243f40303523678a19c2fe Mon Sep 17 00:00:00 2001
From: local-li <2939634393@qq.com>
Date: Fri, 12 Apr 2024 09:57:46 +0800
Subject: [PATCH 1/6] fix-to(impl): Support for module introduction
---
Readme.md | 18 ++++++++++++++++--
1 file changed, 16 insertions(+), 2 deletions(-)
diff --git a/Readme.md b/Readme.md
index 72680bf..f5521ed 100644
--- a/Readme.md
+++ b/Readme.md
@@ -20,7 +20,14 @@
- 高效的
- 精准定位差异
- 轻量级
-- 依赖非常干净,只依赖fastJson
+- 依赖非常干净,只依赖fastJson,fastjson2,gson,jackson其中之一
+
+目前支持功能
+
+ - [x] 支持json-path表示路径
+ - [x] 支持配置化比较行为。详情见下文
+ - [x] 支持拓展自定义比较器,用于满足特殊需求
+ - [x] 支持不同json框架选择。
@@ -39,9 +46,16 @@
${version}
+
+
+
+ cn.xiaoandcai
+ json-diff-impl-fastjson
+ ${version}
+
```
[版本查看](./VersionHistory.md)
-2024-04-11 最新版本:4.0.6-RC1-RELEASE
+2024-04-11 最新版本:4.1.1-RC1-RELEASE
```java
/**
From 53ec5f2730c4a88c382dfdc3c65ca368ae0a2e8c Mon Sep 17 00:00:00 2001
From: local-li <2939634393@qq.com>
Date: Fri, 12 Apr 2024 10:17:43 +0800
Subject: [PATCH 2/6] docs(readme): update readme
---
Readme.md | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/Readme.md b/Readme.md
index f5521ed..2b397f3 100644
--- a/Readme.md
+++ b/Readme.md
@@ -113,10 +113,7 @@ public class UseExample {
工具提供了四个配置,来之对比过程中一些其他的要求。工具还在积极开发中,如果有新的需求,可以给作者提一个issuse。
-在开发中。很多时候对比配置一致。可以使用 `JsonDiffOption` 进行开启唯一配置。这样也将获取更好的性能;
-```java
-
-```
+在开发中。很多时候对比配置一致。可以使用 `JsonDiffOption` 进行开启唯一配置。这样也将获取更好的性能
### 3.进阶
From fb2e32e19ac97b725a8c1fa2d353295659f5cd64 Mon Sep 17 00:00:00 2001
From: local-li <2939634393@qq.com>
Date: Sat, 13 Apr 2024 13:24:17 +0800
Subject: [PATCH 3/6] =?UTF-8?q?fix-to(params):=20=E7=BB=9F=E4=B8=80?=
=?UTF-8?q?=E5=8F=82=E6=95=B0=E9=A1=BA=E5=BA=8F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../core/handle/AbstractHandleFactory.java | 10 +++---
.../jsondiff/core/handle/HandleFactory.java | 2 +-
.../handle/array/AbstractArrayJsonNeat.java | 4 +--
.../handle/array/ComplexArrayJsonNeat.java | 10 +++---
.../handle/custom/AlignArrayJsonDiff.java | 4 +--
.../handle/object/AbstractObjectJsonNeat.java | 4 +--
.../handle/object/ComplexObjectJsonNeat.java | 4 +--
.../handle/other/AbstractOtherJsonNeat.java | 4 +--
.../handle/other/ComplexOtherJsonNeat.java | 4 +--
.../primitive/AbstractPrimitiveJsonNeat.java | 5 ++-
.../primitive/ComplexPrimitiveJsonNeat.java | 4 +--
.../me/codeleep/jsondiff/test/SimpleTest.java | 32 +++++++++++++++++++
12 files changed, 59 insertions(+), 28 deletions(-)
create mode 100644 json-diff-test/src/main/java/me/codeleep/jsondiff/test/SimpleTest.java
diff --git a/json-diff-core/src/main/java/me/codeleep/jsondiff/core/handle/AbstractHandleFactory.java b/json-diff-core/src/main/java/me/codeleep/jsondiff/core/handle/AbstractHandleFactory.java
index 7119d82..3228351 100644
--- a/json-diff-core/src/main/java/me/codeleep/jsondiff/core/handle/AbstractHandleFactory.java
+++ b/json-diff-core/src/main/java/me/codeleep/jsondiff/core/handle/AbstractHandleFactory.java
@@ -18,20 +18,20 @@
*/
public class AbstractHandleFactory implements HandleFactory{
@Override
- public JsonNeat extends JsonDiff> generate(JsonDiff actual, JsonDiff expect, TravelPath travelPath) {
+ public JsonNeat extends JsonDiff> generate(JsonDiff expect, JsonDiff actual, TravelPath travelPath) {
if (!ClassUtil.isSameClass(expect, actual)) {
return null;
}
// TODO 返回系统默认处理器
if (expect instanceof JsonDiffObject && actual instanceof JsonDiffObject) {
- return new ComplexObjectJsonNeat(travelPath, actual, expect);
+ return new ComplexObjectJsonNeat(travelPath, expect, actual);
}
if (expect instanceof JsonDiffArray && actual instanceof JsonDiffArray) {
- return new ComplexArrayJsonNeat(travelPath, actual, expect);
+ return new ComplexArrayJsonNeat(travelPath, expect, actual);
}
if (expect.isLeaf() && actual.isLeaf()) {
- return new ComplexPrimitiveJsonNeat(travelPath, actual, expect);
+ return new ComplexPrimitiveJsonNeat(travelPath, expect, actual);
}
- return new ComplexOtherJsonNeat(travelPath, actual, expect);
+ return new ComplexOtherJsonNeat(travelPath, expect, actual);
}
}
diff --git a/json-diff-core/src/main/java/me/codeleep/jsondiff/core/handle/HandleFactory.java b/json-diff-core/src/main/java/me/codeleep/jsondiff/core/handle/HandleFactory.java
index 62b04fe..7447c0e 100644
--- a/json-diff-core/src/main/java/me/codeleep/jsondiff/core/handle/HandleFactory.java
+++ b/json-diff-core/src/main/java/me/codeleep/jsondiff/core/handle/HandleFactory.java
@@ -11,6 +11,6 @@
*/
public interface HandleFactory {
- JsonNeat extends JsonDiff> generate(JsonDiff actual, JsonDiff expect, TravelPath travelPath);
+ JsonNeat extends JsonDiff> generate(JsonDiff expect, JsonDiff actual, TravelPath travelPath);
}
diff --git a/json-diff-core/src/main/java/me/codeleep/jsondiff/core/handle/array/AbstractArrayJsonNeat.java b/json-diff-core/src/main/java/me/codeleep/jsondiff/core/handle/array/AbstractArrayJsonNeat.java
index b971d69..2deb442 100644
--- a/json-diff-core/src/main/java/me/codeleep/jsondiff/core/handle/array/AbstractArrayJsonNeat.java
+++ b/json-diff-core/src/main/java/me/codeleep/jsondiff/core/handle/array/AbstractArrayJsonNeat.java
@@ -19,9 +19,9 @@ public abstract class AbstractArrayJsonNeat extends Abs
protected final JsonDiffArray expect;
- protected AbstractArrayJsonNeat(TravelPath travelPath, JsonDiff actual, JsonDiff expect) {
+ protected AbstractArrayJsonNeat(TravelPath travelPath, JsonDiff expect, JsonDiff actual) {
super(travelPath);
- if (!(actual instanceof JsonDiffArray) || !(expect instanceof JsonDiffArray)) {
+ if (!(expect instanceof JsonDiffArray) || !(actual instanceof JsonDiffArray)) {
throw new IllegalArgumentException("Parameter type error, actual and expect must be JsonDiffArray");
}
this.actual = (JsonDiffArray) actual;
diff --git a/json-diff-core/src/main/java/me/codeleep/jsondiff/core/handle/array/ComplexArrayJsonNeat.java b/json-diff-core/src/main/java/me/codeleep/jsondiff/core/handle/array/ComplexArrayJsonNeat.java
index f6e2b01..b359f5d 100644
--- a/json-diff-core/src/main/java/me/codeleep/jsondiff/core/handle/array/ComplexArrayJsonNeat.java
+++ b/json-diff-core/src/main/java/me/codeleep/jsondiff/core/handle/array/ComplexArrayJsonNeat.java
@@ -19,8 +19,8 @@
*/
public class ComplexArrayJsonNeat extends AbstractArrayJsonNeat {
- public ComplexArrayJsonNeat(TravelPath travelPath, JsonDiff actual, JsonDiff expect) {
- super(travelPath, actual, expect);
+ public ComplexArrayJsonNeat(TravelPath travelPath, JsonDiff expect, JsonDiff actual) {
+ super(travelPath, expect, actual);
}
protected JsonCompareResult ignoreOrder(JsonDiffArray expect, JsonDiffArray actual) {
@@ -39,7 +39,7 @@ protected JsonCompareResult ignoreOrder(JsonDiffArray expect, JsonDiffArray actu
continue;
}
TravelPath nextTravelPath = new TravelPath(this.travelPath, expectIndex, actualIndex);
- JsonNeat extends JsonDiff> jsonNeat = RunTimeDataFactory.getOptionInstance().getJsonNeatFactory().generate(actual.get(actualIndex), expect.get(expectIndex), nextTravelPath);
+ JsonNeat extends JsonDiff> jsonNeat = RunTimeDataFactory.getOptionInstance().getJsonNeatFactory().generate( expect.get(expectIndex), actual.get(actualIndex), nextTravelPath);
if (jsonNeat == null) {
continue;
}
@@ -65,7 +65,7 @@ protected JsonCompareResult ignoreOrder(JsonDiffArray expect, JsonDiffArray actu
JsonDiff actualItem = actual.get(actualIndex);
TravelPath nextTravelPath = new TravelPath(this.travelPath, expectIndex, actualIndex);
// 判断类型, 根据类型去实例化JsonNeat。
- JsonNeat extends JsonDiff> jsonNeat = RunTimeDataFactory.getOptionInstance().getJsonNeatFactory().generate(actualItem, expectItem, nextTravelPath);
+ JsonNeat extends JsonDiff> jsonNeat = RunTimeDataFactory.getOptionInstance().getJsonNeatFactory().generate(expectItem, actualItem, nextTravelPath);
// 类型不一致
if (jsonNeat != null) {
JsonCompareResult diff = jsonNeat.diff();
@@ -93,7 +93,7 @@ protected JsonCompareResult keepOrder(JsonDiffArray expect, JsonDiffArray actual
JsonDiff actualItem = actual.get(i);
TravelPath nextTravelPath = new TravelPath(this.travelPath, i, i);
// 判断类型, 根据类型去实例化JsonNeat。
- JsonNeat extends JsonDiff> jsonNeat = RunTimeDataFactory.getOptionInstance().getJsonNeatFactory().generate(actualItem, expectItem, nextTravelPath);
+ JsonNeat extends JsonDiff> jsonNeat = RunTimeDataFactory.getOptionInstance().getJsonNeatFactory().generate(expectItem, actualItem, nextTravelPath);
// 类型不一致
if (jsonNeat == null) {
Defects defects = new Defects()
diff --git a/json-diff-core/src/main/java/me/codeleep/jsondiff/core/handle/custom/AlignArrayJsonDiff.java b/json-diff-core/src/main/java/me/codeleep/jsondiff/core/handle/custom/AlignArrayJsonDiff.java
index bde9fc0..83be0ad 100644
--- a/json-diff-core/src/main/java/me/codeleep/jsondiff/core/handle/custom/AlignArrayJsonDiff.java
+++ b/json-diff-core/src/main/java/me/codeleep/jsondiff/core/handle/custom/AlignArrayJsonDiff.java
@@ -14,8 +14,8 @@
*/
public class AlignArrayJsonDiff extends ComplexArrayJsonNeat {
- protected AlignArrayJsonDiff(TravelPath travelPath, JsonDiff actual, JsonDiff expect) {
- super(travelPath, actual, expect);
+ protected AlignArrayJsonDiff(TravelPath travelPath, JsonDiff expect, JsonDiff actual) {
+ super(travelPath, expect, actual);
}
@Override
diff --git a/json-diff-core/src/main/java/me/codeleep/jsondiff/core/handle/object/AbstractObjectJsonNeat.java b/json-diff-core/src/main/java/me/codeleep/jsondiff/core/handle/object/AbstractObjectJsonNeat.java
index fab0803..555540c 100644
--- a/json-diff-core/src/main/java/me/codeleep/jsondiff/core/handle/object/AbstractObjectJsonNeat.java
+++ b/json-diff-core/src/main/java/me/codeleep/jsondiff/core/handle/object/AbstractObjectJsonNeat.java
@@ -18,9 +18,9 @@ public abstract class AbstractObjectJsonNeat extends A
protected final JsonDiffObject expect;
- protected AbstractObjectJsonNeat(TravelPath travelPath, JsonDiff actual, JsonDiff expect) {
+ protected AbstractObjectJsonNeat(TravelPath travelPath, JsonDiff expect, JsonDiff actual) {
super(travelPath);
- if (!(actual instanceof JsonDiffObject) || !(expect instanceof JsonDiffObject)) {
+ if (!(expect instanceof JsonDiffObject) || !(actual instanceof JsonDiffObject)) {
throw new IllegalArgumentException("Parameter type error, actual and expect must be JsonDiffObject");
}
this.actual = (JsonDiffObject) actual;
diff --git a/json-diff-core/src/main/java/me/codeleep/jsondiff/core/handle/object/ComplexObjectJsonNeat.java b/json-diff-core/src/main/java/me/codeleep/jsondiff/core/handle/object/ComplexObjectJsonNeat.java
index aa557de..7d8c137 100644
--- a/json-diff-core/src/main/java/me/codeleep/jsondiff/core/handle/object/ComplexObjectJsonNeat.java
+++ b/json-diff-core/src/main/java/me/codeleep/jsondiff/core/handle/object/ComplexObjectJsonNeat.java
@@ -31,8 +31,8 @@ public class ComplexObjectJsonNeat extends AbstractObjectJsonNeat keyMap = new ArrayList<>();
- public ComplexObjectJsonNeat(TravelPath travelPath, JsonDiff actual, JsonDiff expect) {
- super(travelPath, actual, expect);
+ public ComplexObjectJsonNeat(TravelPath travelPath, JsonDiff expect, JsonDiff actual) {
+ super(travelPath, expect, actual);
}
/**
diff --git a/json-diff-core/src/main/java/me/codeleep/jsondiff/core/handle/other/AbstractOtherJsonNeat.java b/json-diff-core/src/main/java/me/codeleep/jsondiff/core/handle/other/AbstractOtherJsonNeat.java
index 8aa3f0f..6411511 100644
--- a/json-diff-core/src/main/java/me/codeleep/jsondiff/core/handle/other/AbstractOtherJsonNeat.java
+++ b/json-diff-core/src/main/java/me/codeleep/jsondiff/core/handle/other/AbstractOtherJsonNeat.java
@@ -20,9 +20,9 @@ public abstract class AbstractOtherJsonNeat extends Abs
protected final JsonDiffOther expect;
- protected AbstractOtherJsonNeat(TravelPath travelPath, JsonDiff actual, JsonDiff expect) {
+ protected AbstractOtherJsonNeat(TravelPath travelPath, JsonDiff expect, JsonDiff actual) {
super(travelPath);
- if (!(actual instanceof JsonDiffOther) || !(expect instanceof JsonDiffOther)) {
+ if (!(expect instanceof JsonDiffOther) || !(actual instanceof JsonDiffOther)) {
throw new IllegalArgumentException("Parameter type error, actual and expect must be JsonDiffOther");
}
this.actual = (JsonDiffOther) actual;
diff --git a/json-diff-core/src/main/java/me/codeleep/jsondiff/core/handle/other/ComplexOtherJsonNeat.java b/json-diff-core/src/main/java/me/codeleep/jsondiff/core/handle/other/ComplexOtherJsonNeat.java
index 075fbd5..d7621d0 100644
--- a/json-diff-core/src/main/java/me/codeleep/jsondiff/core/handle/other/ComplexOtherJsonNeat.java
+++ b/json-diff-core/src/main/java/me/codeleep/jsondiff/core/handle/other/ComplexOtherJsonNeat.java
@@ -17,8 +17,8 @@
*/
public class ComplexOtherJsonNeat extends AbstractOtherJsonNeat {
- public ComplexOtherJsonNeat(TravelPath travelPath, JsonDiff actual, JsonDiff expect) {
- super(travelPath, actual, expect);
+ public ComplexOtherJsonNeat(TravelPath travelPath, JsonDiff expect, JsonDiff actual) {
+ super(travelPath, expect, actual);
}
@Override
diff --git a/json-diff-core/src/main/java/me/codeleep/jsondiff/core/handle/primitive/AbstractPrimitiveJsonNeat.java b/json-diff-core/src/main/java/me/codeleep/jsondiff/core/handle/primitive/AbstractPrimitiveJsonNeat.java
index 0d09f49..3140e60 100644
--- a/json-diff-core/src/main/java/me/codeleep/jsondiff/core/handle/primitive/AbstractPrimitiveJsonNeat.java
+++ b/json-diff-core/src/main/java/me/codeleep/jsondiff/core/handle/primitive/AbstractPrimitiveJsonNeat.java
@@ -4,7 +4,6 @@
import me.codeleep.jsondiff.common.model.JsonCompareResult;
import me.codeleep.jsondiff.common.model.TravelPath;
import me.codeleep.jsondiff.common.model.neat.JsonDiff;
-import me.codeleep.jsondiff.common.model.neat.JsonDiffObject;
import me.codeleep.jsondiff.common.model.neat.JsonDiffPrimitive;
import me.codeleep.jsondiff.core.handle.AbstractJsonNeat;
@@ -19,9 +18,9 @@ public abstract class AbstractPrimitiveJsonNeat ext
protected final JsonDiffPrimitive expect;
- protected AbstractPrimitiveJsonNeat(TravelPath travelPath, JsonDiff actual, JsonDiff expect) {
+ protected AbstractPrimitiveJsonNeat(TravelPath travelPath, JsonDiff expect, JsonDiff actual) {
super(travelPath);
- if (!(actual instanceof JsonDiffPrimitive) || !(expect instanceof JsonDiffPrimitive)) {
+ if (!(expect instanceof JsonDiffPrimitive) || !(actual instanceof JsonDiffPrimitive)) {
throw new IllegalArgumentException("Parameter type error, actual and expect must be JsonDiffPrimitive");
}
this.actual = (JsonDiffPrimitive) actual;
diff --git a/json-diff-core/src/main/java/me/codeleep/jsondiff/core/handle/primitive/ComplexPrimitiveJsonNeat.java b/json-diff-core/src/main/java/me/codeleep/jsondiff/core/handle/primitive/ComplexPrimitiveJsonNeat.java
index 68f541d..8211421 100644
--- a/json-diff-core/src/main/java/me/codeleep/jsondiff/core/handle/primitive/ComplexPrimitiveJsonNeat.java
+++ b/json-diff-core/src/main/java/me/codeleep/jsondiff/core/handle/primitive/ComplexPrimitiveJsonNeat.java
@@ -17,8 +17,8 @@
*/
public class ComplexPrimitiveJsonNeat extends AbstractPrimitiveJsonNeat {
- public ComplexPrimitiveJsonNeat(TravelPath travelPath, JsonDiff actual, JsonDiff expect) {
- super(travelPath, actual, expect);
+ public ComplexPrimitiveJsonNeat(TravelPath travelPath, JsonDiff expect, JsonDiff actual) {
+ super(travelPath, expect, actual);
}
@Override
diff --git a/json-diff-test/src/main/java/me/codeleep/jsondiff/test/SimpleTest.java b/json-diff-test/src/main/java/me/codeleep/jsondiff/test/SimpleTest.java
new file mode 100644
index 0000000..0d7321d
--- /dev/null
+++ b/json-diff-test/src/main/java/me/codeleep/jsondiff/test/SimpleTest.java
@@ -0,0 +1,32 @@
+package me.codeleep.jsondiff.test;
+
+import com.alibaba.fastjson2.JSON;
+import me.codeleep.jsondiff.DefaultJsonDifference;
+import me.codeleep.jsondiff.common.model.JsonCompareResult;
+import me.codeleep.jsondiff.core.config.JsonComparedOption;
+import org.testng.annotations.Test;
+
+import java.util.HashSet;
+
+/**
+ * @author: codeleep
+ * @createTime: 2024/04/12 上午10:22
+ * @description:
+ */
+public class SimpleTest {
+
+ @Test
+ public void test1() {
+ String expect = "{\"name\":\"baron\",\"age\":12}";
+ String actual = "{\"name\":\"baron\"}";
+
+ HashSet ignorePath = new HashSet<>();
+ ignorePath.add("$.age");
+
+ JsonComparedOption jsonComparedOption = new JsonComparedOption().setIgnoreOrder(true).setIgnorePath(ignorePath);
+ JsonCompareResult jsonCompareResult = new DefaultJsonDifference()
+ .option(jsonComparedOption)
+ .detectDiff(expect, actual);
+ System.out.printf(JSON.toJSONString(jsonCompareResult));
+ }
+}
From d2a03f5971d60851a98106c4ae1b06ec3735da69 Mon Sep 17 00:00:00 2001
From: local-li <2939634393@qq.com>
Date: Sat, 13 Apr 2024 13:38:10 +0800
Subject: [PATCH 4/6] =?UTF-8?q?fix-to(params):=20=E7=BB=9F=E4=B8=80?=
=?UTF-8?q?=E5=8F=82=E6=95=B0=E9=A1=BA=E5=BA=8F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../jsondiff/core/handle/object/ComplexObjectJsonNeat.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/json-diff-core/src/main/java/me/codeleep/jsondiff/core/handle/object/ComplexObjectJsonNeat.java b/json-diff-core/src/main/java/me/codeleep/jsondiff/core/handle/object/ComplexObjectJsonNeat.java
index 7d8c137..578f036 100644
--- a/json-diff-core/src/main/java/me/codeleep/jsondiff/core/handle/object/ComplexObjectJsonNeat.java
+++ b/json-diff-core/src/main/java/me/codeleep/jsondiff/core/handle/object/ComplexObjectJsonNeat.java
@@ -111,7 +111,7 @@ protected JsonCompareResult diff1() {
JsonDiff actualDiffJson = actual.get(mappingKey.getActualKey());
TravelPath nextTravelPath = new TravelPath(travelPath, mappingKey);
// 判断类型, 根据类型去实例化JsonNeat。
- JsonNeat extends JsonDiff> jsonNeat = RunTimeDataFactory.getOptionInstance().getJsonNeatFactory().generate(actualDiffJson, expectDiffJson, nextTravelPath);
+ JsonNeat extends JsonDiff> jsonNeat = RunTimeDataFactory.getOptionInstance().getJsonNeatFactory().generate(expectDiffJson, actualDiffJson, nextTravelPath);
if (jsonNeat == null) {
Defects defects = new Defects()
.setActual(actualDiffJson)
From 1d804da30585b0c008a0f91edd72d3c3ce07d01f Mon Sep 17 00:00:00 2001
From: local-li <2939634393@qq.com>
Date: Sat, 13 Apr 2024 14:34:52 +0800
Subject: [PATCH 5/6] =?UTF-8?q?fix-to(return):=20=E6=A0=BC=E5=BC=8F?=
=?UTF-8?q?=E5=8C=96=E8=BF=94=E5=9B=9E=E5=80=BC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../codeleep/jsondiff/impl/fastjson/FastJsonArray.java | 7 ++++++-
.../jsondiff/impl/fastjson/FastJsonObject.java | 7 ++++++-
.../codeleep/jsondiff/impl/fastjson/FastJsonOther.java | 3 +++
.../jsondiff/impl/fastjson/FastJsonPrimitive.java | 3 +++
.../jsondiff/impl/fastjson2/FastJson2Array.java | 5 ++++-
.../jsondiff/impl/fastjson2/FastJson2Object.java | 5 ++++-
.../jsondiff/impl/fastjson2/FastJson2Other.java | 3 +++
.../jsondiff/impl/fastjson2/FastJson2Primitive.java | 3 +++
.../java/me/codeleep/jsondiff/impl/gson/GsonArray.java | 5 ++++-
.../me/codeleep/jsondiff/impl/gson/GsonObject.java | 5 ++++-
.../java/me/codeleep/jsondiff/impl/gson/GsonOther.java | 7 +++++++
.../me/codeleep/jsondiff/impl/gson/GsonPrimitive.java | 7 +++++++
.../codeleep/jsondiff/impl/jackson/JacksonArray.java | 10 +++++++++-
.../codeleep/jsondiff/impl/jackson/JacksonObject.java | 10 +++++++++-
.../codeleep/jsondiff/impl/jackson/JacksonOther.java | 7 +++++++
.../jsondiff/impl/jackson/JacksonPrimitive.java | 7 +++++++
.../me/codeleep/jsondiff/impl/jackson/JacksonUtil.java | 2 +-
json-diff-test/pom.xml | 2 +-
18 files changed, 88 insertions(+), 10 deletions(-)
diff --git a/json-diff-impl/json-diff-impl-fastjson/src/main/java/me/codeleep/jsondiff/impl/fastjson/FastJsonArray.java b/json-diff-impl/json-diff-impl-fastjson/src/main/java/me/codeleep/jsondiff/impl/fastjson/FastJsonArray.java
index b4a3b0d..67bef4d 100644
--- a/json-diff-impl/json-diff-impl-fastjson/src/main/java/me/codeleep/jsondiff/impl/fastjson/FastJsonArray.java
+++ b/json-diff-impl/json-diff-impl-fastjson/src/main/java/me/codeleep/jsondiff/impl/fastjson/FastJsonArray.java
@@ -1,9 +1,11 @@
package me.codeleep.jsondiff.impl.fastjson;
+import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import me.codeleep.jsondiff.common.model.neat.JsonDiff;
import me.codeleep.jsondiff.common.model.neat.JsonDiffArray;
+import java.util.ArrayList;
import java.util.Collection;
/**
@@ -47,7 +49,10 @@ public void addAll(Collection> c) {
@Override
public Object format() {
- return String.valueOf(jsonArray);
+ if (jsonArray == null) {
+ return null;
+ }
+ return jsonArray.toJSONString();
}
@Override
diff --git a/json-diff-impl/json-diff-impl-fastjson/src/main/java/me/codeleep/jsondiff/impl/fastjson/FastJsonObject.java b/json-diff-impl/json-diff-impl-fastjson/src/main/java/me/codeleep/jsondiff/impl/fastjson/FastJsonObject.java
index f857e27..4d71057 100644
--- a/json-diff-impl/json-diff-impl-fastjson/src/main/java/me/codeleep/jsondiff/impl/fastjson/FastJsonObject.java
+++ b/json-diff-impl/json-diff-impl-fastjson/src/main/java/me/codeleep/jsondiff/impl/fastjson/FastJsonObject.java
@@ -5,6 +5,8 @@
import me.codeleep.jsondiff.common.model.neat.JsonDiff;
import me.codeleep.jsondiff.common.model.neat.JsonDiffObject;
+import java.util.ArrayList;
+import java.util.HashMap;
import java.util.HashSet;
import java.util.Set;
@@ -39,7 +41,10 @@ public Set keySet() {
@Override
public Object format() {
- return JSON.toJSONString(jsonObject);
+ if (jsonObject == null) {
+ return null;
+ }
+ return jsonObject.toJSONString();
}
@Override
diff --git a/json-diff-impl/json-diff-impl-fastjson/src/main/java/me/codeleep/jsondiff/impl/fastjson/FastJsonOther.java b/json-diff-impl/json-diff-impl-fastjson/src/main/java/me/codeleep/jsondiff/impl/fastjson/FastJsonOther.java
index 8d5e62a..4c69b5a 100644
--- a/json-diff-impl/json-diff-impl-fastjson/src/main/java/me/codeleep/jsondiff/impl/fastjson/FastJsonOther.java
+++ b/json-diff-impl/json-diff-impl-fastjson/src/main/java/me/codeleep/jsondiff/impl/fastjson/FastJsonOther.java
@@ -34,6 +34,9 @@ public boolean isEquals(JsonDiffOther jsonDiffOther) {
@Override
public Object format() {
+ if (object == null || object instanceof String) {
+ return object;
+ }
return String.valueOf(object);
}
diff --git a/json-diff-impl/json-diff-impl-fastjson/src/main/java/me/codeleep/jsondiff/impl/fastjson/FastJsonPrimitive.java b/json-diff-impl/json-diff-impl-fastjson/src/main/java/me/codeleep/jsondiff/impl/fastjson/FastJsonPrimitive.java
index 5d87da7..86d8150 100644
--- a/json-diff-impl/json-diff-impl-fastjson/src/main/java/me/codeleep/jsondiff/impl/fastjson/FastJsonPrimitive.java
+++ b/json-diff-impl/json-diff-impl-fastjson/src/main/java/me/codeleep/jsondiff/impl/fastjson/FastJsonPrimitive.java
@@ -29,6 +29,9 @@ public boolean isEquals(JsonDiffPrimitive jsonDiffPrimitive) {
@Override
public Object format() {
+ if (object == null || object instanceof String) {
+ return object;
+ }
return String.valueOf(object);
}
diff --git a/json-diff-impl/json-diff-impl-fastjson2/src/main/java/me/codeleep/jsondiff/impl/fastjson2/FastJson2Array.java b/json-diff-impl/json-diff-impl-fastjson2/src/main/java/me/codeleep/jsondiff/impl/fastjson2/FastJson2Array.java
index 749c031..6d484de 100644
--- a/json-diff-impl/json-diff-impl-fastjson2/src/main/java/me/codeleep/jsondiff/impl/fastjson2/FastJson2Array.java
+++ b/json-diff-impl/json-diff-impl-fastjson2/src/main/java/me/codeleep/jsondiff/impl/fastjson2/FastJson2Array.java
@@ -49,7 +49,10 @@ public void addAll(Collection> c) {
@Override
public Object format() {
- return JSON.to(ArrayList.class, jsonArray);
+ if (jsonArray == null) {
+ return null;
+ }
+ return jsonArray.toJSONString();
}
@Override
diff --git a/json-diff-impl/json-diff-impl-fastjson2/src/main/java/me/codeleep/jsondiff/impl/fastjson2/FastJson2Object.java b/json-diff-impl/json-diff-impl-fastjson2/src/main/java/me/codeleep/jsondiff/impl/fastjson2/FastJson2Object.java
index 39a8a30..48c82bb 100644
--- a/json-diff-impl/json-diff-impl-fastjson2/src/main/java/me/codeleep/jsondiff/impl/fastjson2/FastJson2Object.java
+++ b/json-diff-impl/json-diff-impl-fastjson2/src/main/java/me/codeleep/jsondiff/impl/fastjson2/FastJson2Object.java
@@ -40,7 +40,10 @@ public Set keySet() {
@Override
public Object format() {
- return JSON.to(HashMap.class, jsonObject);
+ if (this.jsonObject == null) {
+ return null;
+ }
+ return jsonObject.toJSONString();
}
@Override
diff --git a/json-diff-impl/json-diff-impl-fastjson2/src/main/java/me/codeleep/jsondiff/impl/fastjson2/FastJson2Other.java b/json-diff-impl/json-diff-impl-fastjson2/src/main/java/me/codeleep/jsondiff/impl/fastjson2/FastJson2Other.java
index 81bba0e..59591db 100644
--- a/json-diff-impl/json-diff-impl-fastjson2/src/main/java/me/codeleep/jsondiff/impl/fastjson2/FastJson2Other.java
+++ b/json-diff-impl/json-diff-impl-fastjson2/src/main/java/me/codeleep/jsondiff/impl/fastjson2/FastJson2Other.java
@@ -35,6 +35,9 @@ public boolean isEquals(JsonDiffOther jsonDiffOther) {
@Override
public Object format() {
+ if (object == null || object instanceof String) {
+ return object;
+ }
return String.valueOf(object);
}
diff --git a/json-diff-impl/json-diff-impl-fastjson2/src/main/java/me/codeleep/jsondiff/impl/fastjson2/FastJson2Primitive.java b/json-diff-impl/json-diff-impl-fastjson2/src/main/java/me/codeleep/jsondiff/impl/fastjson2/FastJson2Primitive.java
index fc325a4..346491b 100644
--- a/json-diff-impl/json-diff-impl-fastjson2/src/main/java/me/codeleep/jsondiff/impl/fastjson2/FastJson2Primitive.java
+++ b/json-diff-impl/json-diff-impl-fastjson2/src/main/java/me/codeleep/jsondiff/impl/fastjson2/FastJson2Primitive.java
@@ -29,6 +29,9 @@ public boolean isEquals(JsonDiffPrimitive jsonDiffPrimitive) {
@Override
public Object format() {
+ if (object == null || object instanceof String) {
+ return object;
+ }
return String.valueOf(object);
}
diff --git a/json-diff-impl/json-diff-impl-gson/src/main/java/me/codeleep/jsondiff/impl/gson/GsonArray.java b/json-diff-impl/json-diff-impl-gson/src/main/java/me/codeleep/jsondiff/impl/gson/GsonArray.java
index 4eaadd1..4c90b6c 100644
--- a/json-diff-impl/json-diff-impl-gson/src/main/java/me/codeleep/jsondiff/impl/gson/GsonArray.java
+++ b/json-diff-impl/json-diff-impl-gson/src/main/java/me/codeleep/jsondiff/impl/gson/GsonArray.java
@@ -65,7 +65,10 @@ public void addAll(Collection> cs) {
@Override
public Object format() {
- return gson.fromJson(jsonArray, ArrayList.class);
+ if (jsonArray == null) {
+ return null;
+ }
+ return gson.toJson(jsonArray);
}
@Override
diff --git a/json-diff-impl/json-diff-impl-gson/src/main/java/me/codeleep/jsondiff/impl/gson/GsonObject.java b/json-diff-impl/json-diff-impl-gson/src/main/java/me/codeleep/jsondiff/impl/gson/GsonObject.java
index a9c4051..8f74604 100644
--- a/json-diff-impl/json-diff-impl-gson/src/main/java/me/codeleep/jsondiff/impl/gson/GsonObject.java
+++ b/json-diff-impl/json-diff-impl-gson/src/main/java/me/codeleep/jsondiff/impl/gson/GsonObject.java
@@ -54,7 +54,10 @@ public Set keySet() {
@Override
public Object format() {
- return gson.fromJson(jsonObject, HashMap.class);
+ if (jsonObject == null) {
+ return null;
+ }
+ return gson.toJson(jsonObject);
}
@Override
diff --git a/json-diff-impl/json-diff-impl-gson/src/main/java/me/codeleep/jsondiff/impl/gson/GsonOther.java b/json-diff-impl/json-diff-impl-gson/src/main/java/me/codeleep/jsondiff/impl/gson/GsonOther.java
index feeefc4..1492bb7 100644
--- a/json-diff-impl/json-diff-impl-gson/src/main/java/me/codeleep/jsondiff/impl/gson/GsonOther.java
+++ b/json-diff-impl/json-diff-impl-gson/src/main/java/me/codeleep/jsondiff/impl/gson/GsonOther.java
@@ -1,5 +1,6 @@
package me.codeleep.jsondiff.impl.gson;
+import com.google.gson.JsonPrimitive;
import me.codeleep.jsondiff.common.model.neat.JsonDiffOther;
/**
@@ -17,6 +18,12 @@ public GsonOther(Object object) {
@Override
public Object format() {
+ if (object == null || object instanceof String) {
+ return object;
+ }
+ if (object instanceof JsonPrimitive) {
+ return ((JsonPrimitive) object).getAsString();
+ }
return String.valueOf(object);
}
diff --git a/json-diff-impl/json-diff-impl-gson/src/main/java/me/codeleep/jsondiff/impl/gson/GsonPrimitive.java b/json-diff-impl/json-diff-impl-gson/src/main/java/me/codeleep/jsondiff/impl/gson/GsonPrimitive.java
index b029f18..fae883e 100644
--- a/json-diff-impl/json-diff-impl-gson/src/main/java/me/codeleep/jsondiff/impl/gson/GsonPrimitive.java
+++ b/json-diff-impl/json-diff-impl-gson/src/main/java/me/codeleep/jsondiff/impl/gson/GsonPrimitive.java
@@ -1,5 +1,6 @@
package me.codeleep.jsondiff.impl.gson;
+import com.google.gson.JsonPrimitive;
import me.codeleep.jsondiff.common.model.neat.JsonDiffPrimitive;
/**
@@ -17,6 +18,12 @@ public GsonPrimitive(Object object) {
@Override
public Object format() {
+ if (object == null || object instanceof String) {
+ return object;
+ }
+ if (object instanceof JsonPrimitive) {
+ return ((JsonPrimitive) object).getAsString();
+ }
return String.valueOf(object);
}
diff --git a/json-diff-impl/json-diff-impl-jackson/src/main/java/me/codeleep/jsondiff/impl/jackson/JacksonArray.java b/json-diff-impl/json-diff-impl-jackson/src/main/java/me/codeleep/jsondiff/impl/jackson/JacksonArray.java
index 0d28eee..987f64c 100644
--- a/json-diff-impl/json-diff-impl-jackson/src/main/java/me/codeleep/jsondiff/impl/jackson/JacksonArray.java
+++ b/json-diff-impl/json-diff-impl-jackson/src/main/java/me/codeleep/jsondiff/impl/jackson/JacksonArray.java
@@ -1,5 +1,6 @@
package me.codeleep.jsondiff.impl.jackson;
+import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ArrayNode;
@@ -57,7 +58,14 @@ public void addAll(Collection> cs) {
@Override
public Object format() {
- return mapper.convertValue(jsonArray, ArrayList.class);
+ if (jsonArray == null) {
+ return null;
+ }
+ try {
+ return mapper.writeValueAsString(jsonArray);
+ } catch (JsonProcessingException e) {
+ return null;
+ }
}
@Override
diff --git a/json-diff-impl/json-diff-impl-jackson/src/main/java/me/codeleep/jsondiff/impl/jackson/JacksonObject.java b/json-diff-impl/json-diff-impl-jackson/src/main/java/me/codeleep/jsondiff/impl/jackson/JacksonObject.java
index 9e3b1c6..93f8d54 100644
--- a/json-diff-impl/json-diff-impl-jackson/src/main/java/me/codeleep/jsondiff/impl/jackson/JacksonObject.java
+++ b/json-diff-impl/json-diff-impl-jackson/src/main/java/me/codeleep/jsondiff/impl/jackson/JacksonObject.java
@@ -1,5 +1,6 @@
package me.codeleep.jsondiff.impl.jackson;
+import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import me.codeleep.jsondiff.common.model.neat.JsonDiff;
@@ -42,7 +43,14 @@ public Set keySet() {
@Override
public Object format() {
- return mapper.convertValue(jsonObject, HashMap.class);
+ if (jsonObject == null) {
+ return null;
+ }
+ try {
+ return mapper.writeValueAsString(jsonObject);
+ } catch (JsonProcessingException e) {
+ return null;
+ }
}
@Override
diff --git a/json-diff-impl/json-diff-impl-jackson/src/main/java/me/codeleep/jsondiff/impl/jackson/JacksonOther.java b/json-diff-impl/json-diff-impl-jackson/src/main/java/me/codeleep/jsondiff/impl/jackson/JacksonOther.java
index 01edda6..0232e56 100644
--- a/json-diff-impl/json-diff-impl-jackson/src/main/java/me/codeleep/jsondiff/impl/jackson/JacksonOther.java
+++ b/json-diff-impl/json-diff-impl-jackson/src/main/java/me/codeleep/jsondiff/impl/jackson/JacksonOther.java
@@ -1,5 +1,6 @@
package me.codeleep.jsondiff.impl.jackson;
+import com.fasterxml.jackson.databind.JsonNode;
import me.codeleep.jsondiff.common.model.neat.JsonDiffOther;
/**
@@ -17,6 +18,12 @@ public JacksonOther(Object object) {
@Override
public Object format() {
+ if (object == null || object instanceof String) {
+ return object;
+ }
+ if (object instanceof JsonNode) {
+ return ((JsonNode)this.object).asText();
+ }
return String.valueOf(object);
}
diff --git a/json-diff-impl/json-diff-impl-jackson/src/main/java/me/codeleep/jsondiff/impl/jackson/JacksonPrimitive.java b/json-diff-impl/json-diff-impl-jackson/src/main/java/me/codeleep/jsondiff/impl/jackson/JacksonPrimitive.java
index 9be72e6..d142501 100644
--- a/json-diff-impl/json-diff-impl-jackson/src/main/java/me/codeleep/jsondiff/impl/jackson/JacksonPrimitive.java
+++ b/json-diff-impl/json-diff-impl-jackson/src/main/java/me/codeleep/jsondiff/impl/jackson/JacksonPrimitive.java
@@ -1,5 +1,6 @@
package me.codeleep.jsondiff.impl.jackson;
+import com.fasterxml.jackson.databind.JsonNode;
import me.codeleep.jsondiff.common.model.neat.JsonDiffPrimitive;
/**
@@ -17,6 +18,12 @@ public JacksonPrimitive(Object object) {
@Override
public Object format() {
+ if (object == null || object instanceof String) {
+ return object;
+ }
+ if (object instanceof JsonNode) {
+ return ((JsonNode)this.object).asText();
+ }
return String.valueOf(object);
}
diff --git a/json-diff-impl/json-diff-impl-jackson/src/main/java/me/codeleep/jsondiff/impl/jackson/JacksonUtil.java b/json-diff-impl/json-diff-impl-jackson/src/main/java/me/codeleep/jsondiff/impl/jackson/JacksonUtil.java
index 4c67868..83b152c 100644
--- a/json-diff-impl/json-diff-impl-jackson/src/main/java/me/codeleep/jsondiff/impl/jackson/JacksonUtil.java
+++ b/json-diff-impl/json-diff-impl-jackson/src/main/java/me/codeleep/jsondiff/impl/jackson/JacksonUtil.java
@@ -18,7 +18,7 @@ public static JsonDiff formatJsonDiff(Object value) {
return new JacksonArray((ArrayNode) value);
}
if (isJackPrimitive(value)) {
- return new JacksonOther(value);
+ return new JacksonPrimitive(value);
}
return new JacksonOther(value);
}
diff --git a/json-diff-test/pom.xml b/json-diff-test/pom.xml
index 1707f61..1a81135 100644
--- a/json-diff-test/pom.xml
+++ b/json-diff-test/pom.xml
@@ -26,7 +26,7 @@
cn.xiaoandcai
- json-diff-impl-gson
+ json-diff-impl-jackson
${project.version}
compile
From 70d4b8d5cd64617b21aea0845a70a7211ef357c2 Mon Sep 17 00:00:00 2001
From: local-li <2939634393@qq.com>
Date: Sat, 13 Apr 2024 17:09:47 +0800
Subject: [PATCH 6/6] =?UTF-8?q?fix-to(return):=20=E4=BF=AE=E5=A4=8D?=
=?UTF-8?q?=E8=B7=AF=E5=BE=84=E6=98=BE=E7=A4=BA?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../java/me/codeleep/jsondiff/common/model/TravelPath.java | 4 ++--
.../java/me/codeleep/jsondiff/common/utils/PathUtil.java | 6 +++++-
2 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/json-diff-common/src/main/java/me/codeleep/jsondiff/common/model/TravelPath.java b/json-diff-common/src/main/java/me/codeleep/jsondiff/common/model/TravelPath.java
index 6e17058..d035b19 100644
--- a/json-diff-common/src/main/java/me/codeleep/jsondiff/common/model/TravelPath.java
+++ b/json-diff-common/src/main/java/me/codeleep/jsondiff/common/model/TravelPath.java
@@ -31,13 +31,13 @@ public TravelPath(TravelPath parentPath, MappingKey mappingKey) {
// 抽象的路径
this.abstractTravelPath = PathUtil.getObjectPath(parentPath.getAbstractTravelPath()) + (mappingKey.getExpectKey() != null ? mappingKey.getExpectKey() : mappingKey.getActualKey());
// 实际遍历的路径
- this.actualTravelPath = PathUtil.getObjectPath(parentPath.actualTravelPath) + mappingKey.getActualKey();
+ this.actualTravelPath = PathUtil.getObjectPath(parentPath.getActualTravelPath()) + mappingKey.getActualKey();
this.expectTravelPath = PathUtil.getObjectPath(parentPath.getExpectTravelPath()) + mappingKey.getExpectKey();
}
public TravelPath(TravelPath parentPath, int expectIndex, int actualIndex) {
// 抽象的路径
- this.abstractTravelPath = parentPath.getAbstractTravelPath() + PathUtil.getIndexPath("*");
+ this.abstractTravelPath = parentPath.getAbstractTravelPath() + PathUtil.getAbstractIndexPath(null);
// 实际遍历的路径
this.actualTravelPath = parentPath.getActualTravelPath() + PathUtil.getIndexPath(String.valueOf(actualIndex));
this.expectTravelPath = parentPath.getExpectTravelPath() + PathUtil.getIndexPath(String.valueOf(expectIndex));
diff --git a/json-diff-common/src/main/java/me/codeleep/jsondiff/common/utils/PathUtil.java b/json-diff-common/src/main/java/me/codeleep/jsondiff/common/utils/PathUtil.java
index 4996e5c..745e8db 100644
--- a/json-diff-common/src/main/java/me/codeleep/jsondiff/common/utils/PathUtil.java
+++ b/json-diff-common/src/main/java/me/codeleep/jsondiff/common/utils/PathUtil.java
@@ -14,12 +14,16 @@ public class PathUtil {
private static final String ARRAY_SING_RIGHT = "]";
+ public static String getAbstractIndexPath(String index) {
+ return ARRAY_SING_LEFT + "*" + ARRAY_SING_RIGHT;
+ }
+
public static String getIndexPath(String index) {
return ARRAY_SING_LEFT + index + ARRAY_SING_RIGHT;
}
public static String getObjectPath(String parentPath) {
- return parentPath.replaceAll("\\[\\d+]", "[*]") + OBJECT_SING;
+ return parentPath + OBJECT_SING;
}
}