google 的 gson json字符串转map 或 list
这个两天维护项目,要不json字符串转为list 或者 map ,用 gson 解决,总是出现转换异常的问题,这个是泛型的问题
例如:json字符串转list
public static List<?> jsonToList(String jsonStr){
List<?> objList=null;
if(gson!=null){
java.lang.reflect.Type type=new com.google.gson.reflect.TypeToken<List<?>>(){}.getType();
objList=gson.fromJson(jsonStr, type);
}
return objList;
}
直接用这个方法会报错!
解决:
public static List<ResultSend> jsonToListByRS(String jsonStr){
List<ResultSend> objList = null;
if(gson!=null){
java.lang.reflect.Type type=new com.google.gson.reflect.TypeToken<List<ResultSend>>(){}.getType();
objList=gson.fromJson(jsonStr, type);
}
return objList;
}
把?换成具体的类就可以了,也不知道为啥,如果?不可以,之前的程序员为什么这么写呢??最后还是像我那样解决的
map也是如此
public static Map<?,?> jsonToMap(String jsonStr){
Map<?,?> objMap=null;
if(gson!=null){
java.lang.reflect.Type type=new com.google.gson.reflect.TypeToken<Map<?,?>>(){}.getType();
objMap=gson.fromJson(jsonStr, type);
}
return objMap;
}
解决:
public static Map<String,ResultSend> jsonToMap2(String jsonStr){
Map<String,ResultSend> objMap=null;
if(gson!=null){
java.lang.reflect.Type type=new com.google.gson.reflect.TypeToken<Map<String,ResultSend>>(){}.getType();
objMap=gson.fromJson(jsonStr, type);
}
return objMap;
}