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

Whi*_* R. 5 java ajax jquery json

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

使用Javascript:

success: function(list) {
    var firstValue = list[0];
    var secondValue = list[1];
    var thirdValue = list[2];
}
Run Code Online (Sandbox Code Playgroud)

Java的:

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);
Run Code Online (Sandbox Code Playgroud)

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

mjk*_*mjk 3

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

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

爪哇

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);
Run Code Online (Sandbox Code Playgroud)

脚本语言

success: function(obj){
  var firstValue = obj.firstValue;
  var secondValue = obj.secondValue;
  var thirdValue = obj.thirdValue;
}
Run Code Online (Sandbox Code Playgroud)