Gson – 从Json转换为一个types化的ArrayList <T>

使用Gson库,如何将JSONstring转换为自定义类JsonLogArrayList ? 基本上, 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库的帮助。