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 表示对象的方式。方括号表示一个列表,花括号用于表示一个对象,在 Javascript 中它的行为类似于地图。在列表条目周围加上花括号是没有意义的,因为在对象中您需要名称-值对(就像地图一样)。

于 2012-12-21T15:36:31.523 回答
1

JSON 中数组的简单文本表示正是 Gson 返回的内容。你需要那种花括号样式做什么?

于 2012-12-21T15:25:43.053 回答