【发布时间】:2013-04-17 13:04:30
【问题描述】:
我正在尝试在 JSP 中显示 JSON 数据,并且我第一次尝试在 JSP 中显示 JSON 数据。
数据是从数据库中获取的,我在 Servlet 中有以下代码
Gson gson = new Gson();
List<Employee> employee = myDAO.getEmpDetails("SMITH");
JsonElement element =
gson.toJsonTree(employee, new TypeToken<List<Employee>>() {
}.getType());
JsonArray jsonArray = element.getAsJsonArray();
response.setContentType("application/json");
response.getWriter().print(jsonArray);
在 JSP 中我称之为
$.get('myservlet',function(responseJson) {
if(responseJson!=null){
$("#empTable").find("tr:gt(0)").remove();
var table1 = $("#empTable");
$.each(responseJson, function(key,value) {
var rowNew = $("<tr><td></td><td></td><td></td><td></td><td></td><td></td></tr>");
rowNew.children().eq(0).text(value['empNo']);
rowNew.children().eq(1).text(value['empName']);
rowNew.children().eq(2).text(value['empAddress']);
rowNew.appendTo(table1);
});
}
});
我遇到的问题是,当我调用我的 servlet 类时,我得到了以下异常
java.lang.RuntimeException: Missing type parameter.
at com.google.gson.reflect.TypeToken.getSuperclassTypeParameter(TypeToken.java:84)
at com.google.gson.reflect.TypeToken.<init>(TypeToken.java:61)
at test.net.MyService$1.<init>(MyService.java)
at test.net.MyService.doPost(MyService.java:101)
at test.net.MyService.doGet(MyService.java:47)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:743)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
我该如何解决这个问题?
【问题讨论】:
-
堆栈跟踪听起来像是 GSON 问题,而不是 JSP 问题。
-
您使用的是什么版本的 Gson?此外,您应该能够使用
new Gson().toJson(employee);直接序列化您的列表(无需类型标记)。 -
@Perception 我正在使用
gson-2.2.2.jar -
@Polppan - 您的“直接使用”代码示例没问题,应该可以消除您的 servlet 端错误。至于在页面上显示结果(通过 Javascript),您现在有什么问题?旁注,我确实找到了this link on Google Groups,这可能与您的原始问题有关。
-
@Perception 我的问题已经解决,谢谢。如果您可以发布答案,我将很乐意接受。
标签: java json jsp servlets gson