5

我正在尝试使用多个值从我的服务器返回到 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);

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

4

1 回答 1

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 中的功能范围变量,我认为您可以只传递对象并访问其属性。

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;
}
于 2012-12-18T13:14:12.380 回答