如何在servlet中使用GSON解析此JSON字符串

如何解析此JSON字符串以在servlet中创建集合对象

{"title":["1","2"],"amount":["1","3"]} 

我的servlet中的内部类

 public class Data { private List title; private List amount; //getters and setters } 

解析json

 Gson gson = new Gson(); String param=request.getParameter("info"); Data data = gson.fromJson(param, Data.class); List a=data.getTitle(); if(a==null){p("a null");}else{p("a not null");} //here a is null, prints "a null" 

这是我如何创建json字符串的jsfiddle http://jsfiddle.net/testtracker/XDNLp/

客户端表单提交function

 var dataString=JSON.stringify($(this).serializeObject()); $.ajax({ type: "POST", url: URL, data: {"info":JSON.stringify($(this).serializeObject())}, success: function(data){ } }); 

这就是我现在所拥有的。 我正确的方式吗? 接下来我应该对System.print做些什么呢?

当我无法解决问题时,我会编写尽可能小的程序来validation我的理解是否正确。 在你的情况下,我想出了这个:

 import java.util.List; import com.google.gson.Gson; public class GsonTest { public static class Data { private List title; public List getTitle() {return title;} public Data() {} } public static void main (String [] args) { Gson gson = new Gson(); Data data = gson.fromJson("{\"title\":[\"1\",\"2\"]}", Data.class); System.out.println(data.getTitle()); } } 

编译,运行,并输出:

 ["1", "2"] 

所以我仍然认为servlet接收的输入不正确(或者你没有提供现有代码的准确描述)。 请将上面的示例与您的实际代码进行比较。

尝试

 public class Data { private ArrayList title; private ArrayList amount; //getters and setters } 

List是一个抽象类(所以GSON不知道如何创建它)