使用Google GSON将String转换为JSON数组
我正在使用Google GSON库将国家/地区的ArrayList转换为JSON:
ArrayList countries = new ArrayList(); // 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> myList = gson.fromJson(result, new TypeToken<ArrayList<HashMap>>() { }.getType()); List list = new ArrayList(); for (Map m : myList) { list.add(new Values(m.get(attribute))); }
使用花括号不是“样式”,它是JSON表示对象的方式。 方括号表示一个列表,花括号用于表示一个对象,它在Javascript中的行为类似于地图。 在列表条目周围放置花括号是没有意义的,因为在对象中你需要名称 – 值对(就像地图一样)。
要构建您向我们展示的字符串,根本不是JSON,您可以这样做:
StringBuilder sb = new StringBuilder("[{"); for (int i=0; i
我建议不要尝试使用仅专用于JSON的Gson。
JSON中数组的简单文本表示正是Gson返回的内容。 您需要什么样的花括号样式?