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?

Author: Matt Quiros, 2012-09-12

2 answers

Puede usar TypeToken para cargar la cadena json en un objeto personalizado.

logs = gson.fromJson(br, new TypeToken<List<JsonLog>>(){}.getType());
 371
Author: Alex,
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.

 18
Author: Mohamed Hussien,
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