如何解析此JSON字符串以在servlet中创建集合对象
{"title":["1","2"],"amount":["1","3"]}
我的servlet中的内部类
public class Data {
private List<String> title;
private List<String> amount;
//getters and setters
}
解析json
Gson gson = new Gson();
String param=request.getParameter("info");
Data data = gson.fromJson(param, Data.class);
List<String> a=data.getTitle();
if(a==null){p("a null");}else{p("a not null");} //here a is null, prints "a null"
这是我如何创建json字符串http://jsfiddle.net/testtracker/XDNLp/
的jsfiddle客户端表单提交功能
var dataString=JSON.stringify($(this).serializeObject());
$.ajax({
type: "POST",
url: URL,
data: {"info":JSON.stringify($(this).serializeObject())},
success: function(data){
}
});
这就是我现在所拥有的。我正确的方式吗?接下来我应该怎么做System.print呢?
答案 0 :(得分:2)
当我无法解决问题时,我会编写尽可能小的程序来验证我的理解是否正确。在你的情况下,我提出了这个:
import java.util.List;
import com.google.gson.Gson;
public class GsonTest {
public static class Data {
private List<String> title;
public List<String> 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接收的输入不正确(或者您没有提供现有代码的准确描述)。请将上面的示例与您的真实代码进行比较。
答案 1 :(得分:1)
尝试
public class Data {
private ArrayList<String> title;
private ArrayList<String> amount;
//getters and setters
}
List是一个抽象类(所以GSON不知道如何创建它)