我正在使用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)));
}
答案 0 :(得分: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。
答案 1 :(得分:1)
JSON中数组的简单文本表示正是Gson返回的内容。你需要什么样的花括号样式?
答案 2 :(得分:1)
使用花括号不是“样式”,而是JSON表示对象的方式。方括号表示一个列表,花括号用于表示一个对象,它在Javascript中的行为类似于地图。在列表条目周围放置花括号是没有意义的,因为在对象中你需要名称 - 值对(就像地图一样)。