Usando la biblioteca Gson, ¿cómo convierto una cadena JSON en una ArrayList
de una clase personalizada JsonLog
? Básicamente, JsonLog
es 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 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 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
JsonLog
como una matrizJsonLog[].class
fuente
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