1

Google GSONライブラリを使用して、国のArrayListをJSONに変換しています。

ArrayList<String> countries = new ArrayList<String>();

// arraylist gts populated

Gson gson = new Gson();
String json = gson.toJson(countries);

どちらが得られますか:

["AFGHANISTAN","ALBANIA","ALGERIA","ANDORRA","ANGOLA","ANGUILLA","ANTARCTICA","ANTIGUA AND BARBUDA","ARGENTINA","ARMENIA","ARUBA","ASHMORE AND CARTIER ISLANDS","AUSTRALIA","AUSTRIA","AZERBAIJAN"]

コードを変更してJSON配列を生成するにはどうすればよいですか?例えば:

[  
   {  
      "AFGHANISTAN",
      "ALBANIA",
      "ALGERIA",
      "ANDORRA",
      "ANGOLA",
      "ANGUILLA",
      "ANTARCTICA",
      "ANTIGUA AND BARBUDA",
      "ARGENTINA",
      "ARMENIA",
      "ARUBA",
      "ASHMORE AND CARTIER ISLANDS",
      "AUSTRALIA",
      "AUSTRIA",
      "AZERBAIJAN"
   }
]

ありがとう!


これは、Javaクライアントがすでに中括弧を含んでいるWebサービス応答を解析するために使用するコードです。これが、各国の回答に中括弧を含める必要がある理由です。

Gson gson = new GsonBuilder().create();
    ArrayList<Map<String, String>> myList = gson.fromJson(result,
            new TypeToken<ArrayList<HashMap<String, String>>>() {
            }.getType());

    List<Values> list = new ArrayList<Values>();

    for (Map<String, String> m : myList) {
        list.add(new Values(m.get(attribute)));
    }
4

3 に答える 3

3

JSONではない、表示する文字列を作成するには、次のようにします。

StringBuilder sb = new StringBuilder("[{");
for (int i=0; i<countries.size(); i++) {
    sb.append("\"").append(countries.get(i)).append("\"");
    if (i<countries.size()-1) sb.append(",");
}
sb.append("}]");
String theString = sb.toString();

JSON専用のGsonは使用しないことをお勧めします。

于 2012-12-21T15:33:03.917 に答える
1

JSONでの配列の単純なテキスト表現は、まさにGsonが返すものです。その中括弧スタイルは何のために必要ですか?

于 2012-12-21T15:25:43.053 に答える
1

中括弧の使用は「スタイル」ではなく、JSONがオブジェクトを表す方法です。角かっこはリストを表し、中かっこはオブジェクトを表すために使用されます。オブジェクトはJavascriptではマップのように動作します。オブジェクト内には(マップのように)名前と値のペアが必要なため、リストエントリを中括弧で囲むことは無意味です。

于 2012-12-21T15:36:31.523 に答える