Skip to content

Commit 2c41eb0

Browse files
committed
feature(json): 支持多个json框架
1. 支持多个json框架
1 parent d10d62d commit 2c41eb0

File tree

10 files changed

+78
-7
lines changed

10 files changed

+78
-7
lines changed

json-diff-common/src/main/java/me/codeleep/jsondiff/common/model/Defects.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package me.codeleep.jsondiff.common.model;
22

3+
import me.codeleep.jsondiff.common.model.neat.JsonDiff;
4+
35
import java.util.HashMap;
46

57
/**
@@ -36,12 +38,20 @@ public class Defects {
3638

3739

3840
public Defects setExpect(Object expect) {
39-
this.expect = expect;
41+
if (expect instanceof JsonDiff) {
42+
this.expect = ((JsonDiff)expect).format();
43+
} else {
44+
this.expect = expect;
45+
}
4046
return this;
4147
}
4248

4349
public Defects setActual(Object actual) {
44-
this.actual = actual;
50+
if (actual instanceof JsonDiff) {
51+
this.actual = ((JsonDiff)actual).format();
52+
} else {
53+
this.actual = actual;
54+
}
4555
return this;
4656
}
4757

json-diff-common/src/main/java/me/codeleep/jsondiff/common/model/neat/JsonDiff.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,7 @@
66
* @description:
77
*/
88
public interface JsonDiff {
9+
10+
Object format();
11+
912
}

json-diff-impl/src/main/java/me/codeleep/jsondiff/impl/fastjson/FastJsonArray.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,12 @@
22

33
import com.alibaba.fastjson.JSONArray;
44
import com.alibaba.fastjson.JSONObject;
5+
import com.alibaba.fastjson2.JSON;
56
import me.codeleep.jsondiff.common.model.neat.JsonDiffArray;
67

8+
import java.util.ArrayList;
79
import java.util.Collection;
10+
import java.util.HashMap;
811

912
/**
1013
* @author: codeleep
@@ -51,4 +54,9 @@ public void add(Object item) {
5154
public void addAll(Collection<?> c) {
5255
jsonArray.addAll(c);
5356
}
57+
58+
@Override
59+
public Object format() {
60+
return JSON.to(ArrayList.class, jsonArray);
61+
}
5462
}

json-diff-impl/src/main/java/me/codeleep/jsondiff/impl/fastjson/FastJsonObject.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@
22

33
import com.alibaba.fastjson.JSONArray;
44
import com.alibaba.fastjson.JSONObject;
5+
import com.alibaba.fastjson2.JSON;
56
import me.codeleep.jsondiff.common.model.neat.JsonDiffObject;
67

8+
import java.util.HashMap;
79
import java.util.HashSet;
810
import java.util.Set;
911

@@ -43,4 +45,9 @@ public Set<String> keySet() {
4345
return this.jsonObject.keySet();
4446
}
4547

48+
@Override
49+
public Object format() {
50+
return JSON.to(HashMap.class, jsonObject);
51+
}
52+
4653
}

json-diff-impl/src/main/java/me/codeleep/jsondiff/impl/fastjson2/FastJson2Array.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
package me.codeleep.jsondiff.impl.fastjson2;
22

3+
import com.alibaba.fastjson2.JSON;
34
import com.alibaba.fastjson2.JSONArray;
45
import com.alibaba.fastjson2.JSONObject;
56
import me.codeleep.jsondiff.common.model.neat.JsonDiffArray;
67

8+
import java.util.ArrayList;
79
import java.util.Collection;
10+
import java.util.HashMap;
811

912
/**
1013
* @author: codeleep
@@ -51,4 +54,9 @@ public void add(Object item) {
5154
public void addAll(Collection<?> c) {
5255
jsonArray.addAll(c);
5356
}
57+
58+
@Override
59+
public Object format() {
60+
return JSON.to(ArrayList.class, jsonArray);
61+
}
5462
}

json-diff-impl/src/main/java/me/codeleep/jsondiff/impl/fastjson2/FastJson2Object.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
package me.codeleep.jsondiff.impl.fastjson2;
22

3+
import com.alibaba.fastjson2.JSON;
34
import com.alibaba.fastjson2.JSONArray;
45
import com.alibaba.fastjson2.JSONObject;
56
import me.codeleep.jsondiff.common.model.neat.JsonDiffObject;
67

8+
import java.util.ArrayList;
9+
import java.util.HashMap;
710
import java.util.HashSet;
811
import java.util.Set;
912

@@ -43,4 +46,9 @@ public Set<String> keySet() {
4346
return this.jsonObject.keySet();
4447
}
4548

49+
@Override
50+
public Object format() {
51+
return JSON.to(HashMap.class, jsonObject);
52+
}
53+
4654
}

json-diff-impl/src/main/java/me/codeleep/jsondiff/impl/gson/GsonArray.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@
33
import com.google.gson.*;
44
import me.codeleep.jsondiff.common.model.neat.JsonDiffArray;
55

6+
import java.util.ArrayList;
67
import java.util.Collection;
8+
import java.util.List;
79

810
/**
911
* @author: codeleep
@@ -55,7 +57,11 @@ public void add(Object item) {
5557

5658
@Override
5759
public void addAll(Collection<?> cs) {
58-
JsonArray jsonElements = new JsonArray();
5960
cs.forEach(this::add);
6061
}
62+
63+
@Override
64+
public Object format() {
65+
return gson.fromJson(jsonArray, ArrayList.class);
66+
}
6167
}

json-diff-impl/src/main/java/me/codeleep/jsondiff/impl/gson/GsonObject.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
package me.codeleep.jsondiff.impl.gson;
22

3+
import com.google.gson.Gson;
34
import com.google.gson.JsonArray;
45
import com.google.gson.JsonObject;
56
import me.codeleep.jsondiff.common.model.neat.JsonDiffObject;
67

8+
import java.util.HashMap;
79
import java.util.HashSet;
10+
import java.util.List;
811
import java.util.Set;
912

1013
/**
@@ -14,6 +17,8 @@
1417
*/
1518
public class GsonObject implements JsonDiffObject {
1619

20+
private static final Gson gson = new Gson();
21+
1722
private final JsonObject jsonObject;
1823

1924
public GsonObject(JsonObject jsonObject) {
@@ -43,4 +48,9 @@ public Set<String> keySet() {
4348
return this.jsonObject.keySet();
4449
}
4550

51+
@Override
52+
public Object format() {
53+
return gson.fromJson(jsonObject, HashMap.class);
54+
}
55+
4656
}

json-diff-impl/src/main/java/me/codeleep/jsondiff/impl/jackson/JacksonArray.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import com.fasterxml.jackson.databind.node.ObjectNode;
88
import me.codeleep.jsondiff.common.model.neat.JsonDiffArray;
99

10+
import java.util.ArrayList;
1011
import java.util.Collection;
1112

1213
/**
@@ -60,4 +61,9 @@ public void add(Object item) {
6061
public void addAll(Collection<?> cs) {
6162
cs.forEach(this::add);
6263
}
64+
65+
@Override
66+
public Object format() {
67+
return mapper.convertValue(jsonArray, ArrayList.class);
68+
}
6369
}

json-diff-impl/src/main/java/me/codeleep/jsondiff/impl/jackson/JacksonObject.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
11
package me.codeleep.jsondiff.impl.jackson;
22

3+
import com.fasterxml.jackson.databind.ObjectMapper;
34
import com.fasterxml.jackson.databind.node.ArrayNode;
45
import com.fasterxml.jackson.databind.node.ObjectNode;
56
import me.codeleep.jsondiff.common.model.neat.JsonDiffObject;
67

7-
import java.util.HashSet;
8-
import java.util.Set;
9-
import java.util.Spliterator;
10-
import java.util.Spliterators;
8+
import java.util.*;
119
import java.util.stream.Collectors;
1210
import java.util.stream.StreamSupport;
1311

@@ -18,6 +16,8 @@
1816
*/
1917
public class JacksonObject implements JsonDiffObject {
2018

19+
private static final ObjectMapper mapper = new ObjectMapper();
20+
2121
private final ObjectNode jsonObject;
2222

2323
public JacksonObject(ObjectNode jsonObject) {
@@ -47,4 +47,9 @@ public Set<String> keySet() {
4747
return StreamSupport.stream(Spliterators.spliteratorUnknownSize(jsonObject.fieldNames(), Spliterator.ORDERED), false).collect(Collectors.toSet());
4848
}
4949

50+
@Override
51+
public Object format() {
52+
return mapper.convertValue(jsonObject, HashMap.class);
53+
}
54+
5055
}

0 commit comments

Comments
 (0)