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

标签 java json servlets gson

如何解析此 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 它们?

最佳答案

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

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

关于java - 如何在 servlet 中使用 GSON 解析此 JSON 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13648273/

相关文章:

json - 如何在 Elasticsearch 中匹配每个数组项的多个字段

java - 如何使用 javac 编译的类文件在 tomcat 7 中构建 java servlet?

java - 如何在 Java 中比较字符串?

java - 在应用程序中设置应用程序特定属性

javascript - 通过 'for in'在javascript中获取对象的键和值

json - 在redis中存储对象属性

java - AspectJ:对于具有多个参数的方法,参数与 'args()' 绑定(bind)

java - Java应用程序中的线程处理

java - Spring MVC 和请求属性

java - 如何将 javascript 变量传递给 java servlet?