Java JSON数据在JSP中显示时出现异常

Java JSON数据在JSP中显示时出现异常,java,json,jsp,servlets,gson,Java,Json,Jsp,Servlets,Gson,我尝试在JSP中显示JSON数据,并且我第一次尝试在JSP中显示JSON数据 数据是从数据库中获取的,我在Servlet中有以下代码 Gson gson = new Gson(); List<Employee> employee = myDAO.getEmpDetails("SMITH"); JsonElement element = gson.toJsonTree(employee, new TypeToke

我尝试在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);
Gson-Gson=new-Gson();
List employee=myDAO.getEmpDetails(“SMITH”);
JsonElement元素=
gson.toJsonTree(雇员,新类型令牌(){
}.getType());
JsonArray JsonArray=element.getAsJsonArray();
setContentType(“应用程序/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);
                });
                }
            });
$.get('myservlet',函数(responseJson){
if(responseJson!=null){
$(“#可清空”).find(“tr:gt(0)”).remove();
var表1=$(“可空”);
$.each(responseJson,函数(键,值){
var rowNew=$(“”);
rowNew.children().eq(0).text(值['empNo']);
rowNew.children().eq(1).text(值['empName']);
rowNew.children().eq(2).text(值['empAddress']);
rowNew.附录(表1);
});
}
});
我遇到的问题是,当我调用我的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)
java.lang.RuntimeException:缺少类型参数。
位于com.google.gson.reflect.TypeToken.getSuperclassTypeParameter(TypeToken.java:84)
在com.google.gson.reflect.TypeToken上(TypeToken.java:61)
test.net.MyService$1.(MyService.java)
位于test.net.MyService.doPost(MyService.java:101)
在test.net.MyService.doGet(MyService.java:47)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:743)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
如何解决此问题?

一份快速报告揭示了与使用
TypeToken
类相关的问题的可能来源。如果使用ProGuard或类似的编译器工具从参数化类中删除类型信息,则令牌初始化可能会以所示方式失败。但是,在跟踪并解决该问题的同时,完全可以在不使用令牌的情况下序列化数据列表:

List<Employee> employee = myDAO.getEmpDetails("SMITH");

String json = new Gson().toJson(employee);   // Note use of `toJson` method
response.setContentType("application/json");
response.getWriter().print(json);
List employee=myDAO.getEmpDetails(“SMITH”);
String json=new Gson().toJson(employee);//注意“toJson”方法的用法
setContentType(“应用程序/json”);
response.getWriter().print(json);

这将消除servlet端的任何错误源,只要Javascript代码正常工作,您就可以继续使用。

stacktrace听起来像是GSON问题,而不是JSP问题。您使用的是哪个版本的GSON?此外,您应该能够使用
new Gson().toJson(employee)直接序列化列表(无需类型标记)
@Perception我正在使用的
gson-2.2.2.jar
@Polppan-您的“直接使用”代码示例是可以的,应该消除servlet端错误。至于在页面上显示结果(通过Javascript),您现在遇到了什么问题?旁注,我确实找到了,这可能与您原来的问题有关。@我的问题已经解决,谢谢。如果你能给我一个回复,我很乐意接受。