使用JSON,jQuery和AJAX以及Java返回多个值

时间:2012-12-18 12:54:06

标签: java jquery ajax json

我正在尝试使用多个值从我的服务器返回到Java中的AJAX。现在,我使用这种方法,但这不是一个好的解决方案:

使用Javascript:

success: function(list) {
    var firstValue = list[0];
    var secondValue = list[1];
    var thirdValue = list[2];
}

爪哇:

ArrayList<ArrayList<String>> list = new ArrayList<ArrayList<String>>();
list.add(infoFirstValue());
list.add(infoThirdValue());
list.add(infoThirdValue());
String glist = gson.toJson(list);
response.getWriter().write(glist);

是否可以返回多个值或对象或其他解决方案?

1 个答案:

答案 0 :(得分:3)

如果有帮助,这里有一些基于你的代码片段,展示了如何切换到对象样式响应而不是数组。 Gson包含类JsonObject,这可能是您最简单的使用方法:http://google-gson.googlecode.com/svn/trunk/gson/docs/javadocs/com/google/gson/JsonObject.html

然而,Gson的方式比那更强大 - 你实际上可以直接序列化一个普通的旧Java对象,这可能比将现有数据转换为JsonObject的中间步骤更优雅(参见现有的答案) :https://stackoverflow.com/questions/1668862/good-json-java-library/1668951#1668951)。至少,info*Value()方法可能更适合作为您序列化对象的方法。而不是将返回的对象属性存储为JavaScript中的函数范围变量,我假设您可以只传递对象并访问其属性。

JAVA

JSONObject rv = new JSONObject();
rv.add("firstValue", infoFirstValue());
rv.add("secondValue", infoSecondValue());
rv.add("thirdValue", infoThirdValue());

String gobject = gson.toJson(rv);
response.getWriter().write(gobject);

JAVASCRIPT

success: function(obj){
  var firstValue = obj.firstValue;
  var secondValue = obj.secondValue;
  var thirdValue = obj.thirdValue;
}