Usando la biblioteca Gson, ¿cómo convierto una cadena JSON en una ArrayListde una clase personalizada JsonLog? Básicamente, JsonLoges una interfaz implementada por diferentes tipos de registros creados por mi aplicación de Android: registros de SMS, registros de llamadas, registros de datos, y esta ArrayListes 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 tipeado ArrayList. ¿Qué debo hacer?

Respuestas:
Puede usar TypeToken para cargar la cadena json en un objeto personalizado.
Documentación:
Kotlin:
Si necesita hacerlo en Kotlin , puede hacerlo así:
O puede ver esta respuesta para varias alternativas.
fuente
{ }anterior.getType()Su muestra JSON es:
así que si desea guardar una lista de módulos en sus SharedPrefrences, entonces:
1- convertirá su lista de matrices devuelta para formato json usando este método
2- Guárdalo en preferencias compartidas
3- para recuperarlo en cualquier momento, obtenga JsonString de preferencias compartidas como esa
4- conviértalo de nuevo a la lista de matriz
Esta solución también es factible si desea analizar ArrayList of Objects. Espero que sea útil mediante el uso de la Biblioteca Gson .
fuente
Si desea utilizar matrices, es bastante simple.
Proporcionar el
JsonLogcomo una matrizJsonLog[].classfuente
O
fuente
¿Por qué nadie escribió esta forma simple de convertir cadenas JSON en List ?
fuente
No estoy seguro acerca de gson, pero así es como lo haces con Jon. Espero que haya una forma similar de usar gson
{"Jugadores": ["jugador 1", "jugador 2", "jugador 3", "jugador 4", "jugador 5"]}
===============================================
fuente
Tienes una cuerda como esta.
Luego puedes convertirlo a ArrayList a través de Gson como
Su clase HotelInfo debería gustarle esto.
fuente