Gson-convertir de Json a una ArrayList mecanografiada
Usando la biblioteca Gson, ¿cómo convierto una cadena JSON en un ArrayList
de una clase personalizada JsonLog
? Básicamente, JsonLog
es una interfaz implementada por diferentes tipos de registros realizados por mi aplicación Android logs registros de SMS, registros de llamadas, registros de datos {y esto ArrayList
es una colección de todos ellos. Sigo recibiendo un error en la línea 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
}
}
Parece que el compilador no entiende que me refiero a un ArrayList
escrito. ¿Qué hago?
2 answers
Puede usar TypeToken para cargar la cadena json en un objeto personalizado.
logs = gson.fromJson(br, new TypeToken<List<JsonLog>>(){}.getType());
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-31 12:02:04
Su muestra JSON es:
{
"status": "ok",
"comment": "",
"result": {
"id": 276,
"firstName": "mohamed",
"lastName": "hussien",
"players": [
"player 1",
"player 2",
"player 3",
"player 4",
"player 5"
]
}
Así que si quieres guardar arraylist de módulos en tus SharedPrefrences así :
1-convertirá su arraylist devuelto para el formato json usando este método
public static String toJson(Object jsonObject) {
return new Gson().toJson(jsonObject);
}
2-Guárdelo en prefreneces compartidos
PreferencesUtils.getInstance(context).setString("players", toJson((.....ArrayList you want to convert.....)));
3-para recuperarlo en cualquier momento obtener jsonString de preferencias compartidas como que
String playersString= PreferencesUtils.getInstance(this).getString("players");
4-convertirlo de nuevo a lista de matrices
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());
Esta solución también es factible si desea analizar ArrayList de objetos Esperar es ayuda usando Biblioteca Gson.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-23 16:59:49