Skip to content

Commit 6d90e5b

Browse files
committed
fix csv load error
1 parent b3fa31f commit 6d90e5b

6 files changed

+62
-20
lines changed

src/main/java/tabby/common/bean/converter/List2JsonStringConverter.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package tabby.common.bean.converter;
22

33
import com.google.gson.reflect.TypeToken;
4-
import tabby.config.GlobalConfiguration;
5-
64
import jakarta.persistence.AttributeConverter;
75
import jakarta.persistence.Converter;
6+
import tabby.common.utils.JsonUtils;
7+
88
import java.lang.reflect.Type;
99
import java.util.ArrayList;
1010
import java.util.List;
@@ -22,7 +22,7 @@ public String convertToDatabaseColumn(List<String> attribute) {
2222
return "";
2323
}
2424

25-
return GlobalConfiguration.GSON.toJson(attribute);
25+
return JsonUtils.toJson(attribute);
2626
}
2727

2828
@Override
@@ -31,6 +31,6 @@ public List<String> convertToEntityAttribute(String dbData) {
3131
return new ArrayList<>();
3232
}
3333
Type objectType = new TypeToken<List<String>>(){}.getType();
34-
return GlobalConfiguration.GSON.fromJson(dbData, objectType);
34+
return JsonUtils.fromJson(dbData, objectType);
3535
}
3636
}

src/main/java/tabby/common/bean/converter/ListInteger2JsonStringConverter.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package tabby.common.bean.converter;
22

33
import com.google.gson.reflect.TypeToken;
4-
import tabby.config.GlobalConfiguration;
5-
64
import jakarta.persistence.AttributeConverter;
75
import jakarta.persistence.Converter;
6+
import tabby.common.utils.JsonUtils;
7+
88
import java.lang.reflect.Type;
99
import java.util.ArrayList;
1010
import java.util.List;
@@ -22,7 +22,7 @@ public String convertToDatabaseColumn(List<Integer> attribute) {
2222
return "";
2323
}
2424

25-
return GlobalConfiguration.GSON.toJson(attribute);
25+
return JsonUtils.toJson(attribute);
2626
}
2727

2828
@Override
@@ -31,6 +31,6 @@ public List<Integer> convertToEntityAttribute(String dbData) {
3131
return new ArrayList<>();
3232
}
3333
Type objectType = new TypeToken<List<Integer>>(){}.getType();
34-
return GlobalConfiguration.GSON.fromJson(dbData, objectType);
34+
return JsonUtils.fromJson(dbData, objectType);
3535
}
3636
}

src/main/java/tabby/common/bean/converter/ListSet2JsonStringConverter.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package tabby.common.bean.converter;
22

33
import com.google.gson.reflect.TypeToken;
4-
import tabby.config.GlobalConfiguration;
5-
64
import jakarta.persistence.AttributeConverter;
75
import jakarta.persistence.Converter;
6+
import tabby.common.utils.JsonUtils;
7+
88
import java.lang.reflect.Type;
99
import java.util.ArrayList;
1010
import java.util.List;
@@ -23,7 +23,7 @@ public String convertToDatabaseColumn(List<Set<String>> attribute) {
2323
return "";
2424
}
2525

26-
return GlobalConfiguration.GSON.toJson(attribute);
26+
return JsonUtils.toJson(attribute);
2727
}
2828

2929
@Override
@@ -32,6 +32,6 @@ public List<Set<String>> convertToEntityAttribute(String dbData) {
3232
return new ArrayList<>();
3333
}
3434
Type objectType = new TypeToken<List<Set<String>>>(){}.getType();
35-
return GlobalConfiguration.GSON.fromJson(dbData, objectType);
35+
return JsonUtils.fromJson(dbData, objectType);
3636
}
3737
}

src/main/java/tabby/common/bean/converter/Map2JsonStringConverter.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package tabby.common.bean.converter;
22

33
import com.google.gson.reflect.TypeToken;
4-
import tabby.config.GlobalConfiguration;
5-
64
import jakarta.persistence.AttributeConverter;
75
import jakarta.persistence.Converter;
6+
import tabby.common.utils.JsonUtils;
7+
88
import java.lang.reflect.Type;
99
import java.util.HashMap;
1010
import java.util.Map;
@@ -21,7 +21,7 @@ public String convertToDatabaseColumn(Map<String, String> attribute) {
2121
if(attribute == null){
2222
return "{}";
2323
}
24-
return GlobalConfiguration.GSON.toJson(attribute);
24+
return JsonUtils.toJson(attribute);
2525
}
2626

2727
@Override
@@ -30,6 +30,6 @@ public Map<String, String> convertToEntityAttribute(String dbData) {
3030
return new HashMap<>();
3131
}
3232
Type objectType = new TypeToken<Map<String, String>>(){}.getType();
33-
return GlobalConfiguration.GSON.fromJson(dbData, objectType);
33+
return JsonUtils.fromJson(dbData, objectType);
3434
}
3535
}

src/main/java/tabby/common/bean/converter/Map2JsonStringForAnnotationsConverter.java

+5-4
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package tabby.common.bean.converter;
22

33
import com.google.gson.reflect.TypeToken;
4-
import tabby.config.GlobalConfiguration;
5-
64
import jakarta.persistence.AttributeConverter;
75
import jakarta.persistence.Converter;
6+
import tabby.common.utils.JsonUtils;
7+
88
import java.lang.reflect.Type;
99
import java.util.HashMap;
1010
import java.util.Map;
@@ -23,7 +23,8 @@ public String convertToDatabaseColumn(Map<String, Map<String, Set<String>>> attr
2323
if(attribute == null){
2424
return "{}";
2525
}
26-
return GlobalConfiguration.GSON.toJson(attribute);
26+
27+
return JsonUtils.toJsonWithReplace(attribute);
2728
}
2829

2930
@Override
@@ -32,6 +33,6 @@ public Map<String, Map<String, Set<String>>> convertToEntityAttribute(String dbD
3233
return new HashMap<>();
3334
}
3435
Type objectType = new TypeToken<Map<String, Map<String, Set<String>>>>(){}.getType();
35-
return new ConcurrentHashMap<>(GlobalConfiguration.GSON.fromJson(dbData, objectType));
36+
return new ConcurrentHashMap<>(JsonUtils.fromJson(dbData, objectType));
3637
}
3738
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package tabby.common.utils;
2+
3+
import com.google.gson.Gson;
4+
import com.google.gson.GsonBuilder;
5+
import com.google.gson.JsonSyntaxException;
6+
7+
import java.lang.reflect.Type;
8+
9+
/**
10+
* 为了解决 csv "" \" 同时存在时,可能导致的解析报错
11+
* @author wh1t3p1g
12+
* @project tabby
13+
* @since 2024/3/23
14+
*/
15+
public class JsonUtils {
16+
17+
public static Gson GSON = new GsonBuilder().disableHtmlEscaping().create();
18+
19+
public static String toJson(Object obj){
20+
return GSON.toJson(obj);
21+
}
22+
23+
public static <T> T fromJson(String json, Type typeOfT) throws JsonSyntaxException {
24+
return GSON.fromJson(json, typeOfT);
25+
}
26+
27+
/**
28+
* 为了解决 csv "" \" 同时存在时,可能导致的解析报错
29+
* @param obj
30+
* @return
31+
*/
32+
public static String toJsonWithReplace(Object obj){
33+
String data = GSON.toJson(obj);
34+
return data.replace("\\", "\\\\");
35+
}
36+
37+
public static <T> T fromJsonWithReplace(String json, Type typeOfT) throws JsonSyntaxException {
38+
json = json.replace("\\\\", "\\");
39+
return GSON.fromJson(json, typeOfT);
40+
}
41+
}

0 commit comments

Comments
 (0)