2

如何解析这个 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 字符串的 jsfiddle http://jsfiddle.net/testtracker/XDNLp/

表单提交功能中的客户端

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

    }
  });

这是我到现在为止的。我走对了吗?接下来我应该对 System.print 它们做什么?

4

2 回答 2

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 接收到的输入不正确(或者您没有提供对现有代码的准确描述)。请将上面的示例与您的真实代码进行比较。

于 2012-11-30T16:22:44.037 回答
1

尝试

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

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

于 2012-11-30T15:55:15.747 回答