项目中前后端交互使用json,遇到复杂结构对象(比如:对象,多态,枚举等等)json串,进行反序列化时,可能无法得到我们想要的结果,此时就需要做一些处理了。下面直接上代码演示吧
枚举类:
自定义json串:
{"dataType":{"type":"int"}}
这里只取复杂对象中的某一个相关类,定义了一个TslDataTypeRR类,枚举类Type为内部类,此时是最开始对象,反序列化的时候,是无法拿到Type属性值的
public class TslDataTypeRR {
private final Type type;
public TslDataTypeRR(Type type) {
this.type = type;
}
public Type getType() {
return type;
}
public enum Type {
INT("int"),
TEXT("text");
private final String type;
Type(String type) {
this.type = type;
}
public static Type getItem(String type){
for(Type item : values()){
if(item.getType().equals(type)){
return item;
}
}
return null;
}
public String getType() {
return type;
}
}
通过Gson反序列化是无法拿到期望结果的
Gson gson = new GsonBuilder()
.serializeNulls()
.create();
TslDataTypeRR element2 = gson.fromJson(jsonData, TslDataTypeRR.class);
下面进行解决方案演示:
第一步,定义一个接口
public interface GsonEnum<E> {
String serialize();

最低0.47元/天 解锁文章
2426

被折叠的 条评论
为什么被折叠?



