Gson – 从Json转换为一个types化的ArrayList <T>
使用Gson库,如何将JSONstring转换为自定义类JsonLog
的ArrayList
? 基本上, JsonLog
是由我的Android应用程序 – 短信日志,通话logging,数据日志 – 所做的各种日志实现的接口,这个ArrayList
是所有这些的集合。 我不断收到第6行的错误。
public static void log(File destination, JsonLog log) { Collection<JsonLog> logs = null; if (destination.exists()) { Gson gson = new Gson(); BufferedReader br = new BufferedReader(new FileReader(destination)); logs = gson.fromJson(br, ArrayList<JsonLog>.class); // line 6 // logs.add(log); // serialize "logs" again } }
看来编译器不明白我指的是一个types的ArrayList
。 我该怎么办?
您可以使用TypeToken将jsonstring加载到自定义对象中。
logs = gson.fromJson(br, new TypeToken<List<JsonLog>>(){}.getType());
你的Json格式是这样的:
{“status”:“ok”,“comment”:“”,“result”:{“id”:276,“firstName”:“mohamed”,“lastName”:“hussien”,“players” 1“,”玩家2“,”玩家3“,”玩家4“,”玩家5“]}}
所以如果你想在你的SharedPrefrences中保存模块的数组列表,所以:
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<String> playersList= (ArrayList<String>) fromJson(playersString, new TypeToken<ArrayList<String>>() { }.getType());
这个解决scheme也是可行的,如果你想parsing对象的ArrayList希望它是通过使用Gson库的帮助。