问题
使用Gson库,如何将JSON字符串转换为自定义类JsonLog的aArrayList?基本上,JsonLog是由我的Android应用程序制作的不同日志实现的界面 - 短信日志,通话记录,数据日志 - 而这个ArrayList是所有这些日志的集合。我在第6行遇到错误。
public static void log(File destination, JsonLog log) {
Collection logs = null;
if (destination.exists()) {
Gson gson = new Gson();
BufferedReader br = new BufferedReader(new FileReader(destination));
logs = gson.fromJson(br, ArrayList.class); // line 6
// logs.add(log);
// serialize "logs" again
}
}
似乎编译器不理解我指的是typedArrayList。我该怎么办?
#1 热门回答(355 赞)
你可以使用TypeToken将json字符串加载到自定义对象中。
logs = gson.fromJson(br, new TypeToken>(){}.getType());
#2 热门回答(17 赞)
你的JSON示例是:
{
"status": "ok",
"comment": "",
"result": {
"id": 276,
"firstName": "mohamed",
"lastName": "hussien",
"players": [
"player 1",
"player 2",
"player 3",
"player 4",
"player 5"
]
}
所以如果你想在SharedPrefrences中保存模块的arraylist,那么:
1-将使用此方法将返回的arraylist转换为json格式
public static String toJson(Object jsonObject) {
return new Gson().toJson(jsonObject);
}
2-将其保存在共享的prefreneces中
PreferencesUtils.getInstance(context).setString("players", toJson((.....ArrayList you want to convert.....)));
3-在任何时候检索它从共享首选项获取JsonString
String playersString= PreferencesUtils.getInstance(this).getString("players");
4-再次将其转换为数组列表
public static Object fromJson(String jsonString, Type type) {
return new Gson().fromJson(jsonString, type);
}
ArrayList playersList= (ArrayList) fromJson(playersString,
new TypeToken>() {
}.getType());
如果你想解析对象的ArrayList,这个解决方案也可行。希望它能帮助你使用Gson Library。