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 オブジェクトを直接シリアル化することができます。これは、既存のデータを に変換する中間ステップよりもおそらくエレガントです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);

ジャバスクリプト

success: function(obj){
  var firstValue = obj.firstValue;
  var secondValue = obj.secondValue;
  var thirdValue = obj.thirdValue;
}
于 2012-12-18T13:14:12.380 に答える