问题描述01
gson解析错误:com.google.gson.internal.LinkedTreeMap cannot be cast to java.lang.String
public void run() {
Response response = gson.fromJson(res, Response.class);
ParticipantInfoVO vo = gson.fromJson(response.getData(), ParticipantInfoVO.class);
}
原因分析01:
提示:response.getData()获得的数据格式有问题
解决方案01:
Response response = gson.fromJson(res, Response.class);
ParticipantInfoVO vo = gson.fromJson(gson.toJsonTree(response.getData()), ParticipantInfoVO.class);
问题描述02
gson解析错误:om.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was STRING at line 1 column 2 path $
public void run() {
String dataFormat = qflReferDataFormat.getDataFormat();
List<ParamSpec> formatList = gson.fromJson(dataFormat, new TypeToken<List<ParamSpec>>() {}.getType());
}
原因分析02:
提示:从数据库得到的字段dataFormat类型是text,存在转移字符/,是不规范的json字符串
解决方案02:
dataFormat = dataFormat.replace("\\", ""); // 去掉转移字符/
dataFormat = dataFormat.substring(1, dataFormat.length() - 1); //去掉头尾引号
List formatList = gson.fromJson(dataFormat, new TypeToken<List>() {}.getType());