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)
是否可以返回多个值或对象或其他解决方案?
如果有帮助,这里有一些基于您上面的代码片段,展示了如何切换到对象样式响应而不是数组。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)