Gson – convierta de Json a una clase ArrayList <T>
Mediante la biblioteca Gson, ¿cómo convertir una cadena JSON a una ArrayList
de una clase personalizada JsonLog
? Básicamente, JsonLog
es una interfaz implementada por diferentes tipos de registros realizados por mi aplicación de Android – registros de SMS, registros de llamadas, registros de datos – y este 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 estoy refiriendo a un ArrayList
escrito. ¿Qué debo hacer?
- Deserializar el mapa JSON usando Jackson no da el mapa correcto
- Obtenga el objeto JSON uno por uno desde la matriz JSON en Android utilizando Retrofit y RxJava
- Extraño error de API de IAP de lotes de Google Play
- Usando Gson para deserializar a Json en un singleton
- Uso de Retrofit para acceder a una API con key / id
- AFNetworking para Android
- Pasar JSONArray a PHP desde Android
- Deserializar un objeto JSON con múltiples elementos dentro de él
- Permiso de la API de Youtube 403 Error prohibido
- ¿Cómo puedo obtener la respuesta JSON de una solicitud POST en un WebView?
- JSON problema de análisis no resuelto
- Error de puntero nulo en la tarea asíncrona
- Saltos de línea con WCF, JSON y un cliente que no sea Windows
Puede utilizar TypeToken para cargar la cadena json en un objeto personalizado.
logs = gson.fromJson(br, new TypeToken<List<JsonLog>>(){}.getType());
Su formato de Json como esto:
{"Status": "ok", "comment": "", "resultado": 276, "firstName": "mohamed", "lastName": "hussien" 1 "," jugador 2 "," jugador 3 "," jugador 4 "," jugador 5 "]}}
Así que si quieres guardar arraylist de módulos en tu 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- Guardarlo en prefreneces compartidos
PreferencesUtils.getInstance(context).setString("players", toJson((.....ArrayList you want to convert.....)));
3- para recuperarla en cualquier momento obtener JsonString de preferencias compartidas como ese
String playersString= PreferencesUtils.getInstance(this).getString("players");
4- convertirlo de nuevo a la 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 Espero que sea de ayuda con Gson Library .