Saltar al contenido

Gson: convierta de Json a una ArrayList con tipo

Solución:

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

logs = gson.fromJson(br, new TypeToken<List<JsonLog>>(){}.getType());

Documentación:

Representa un tipo genérico T.

Java aún no proporciona una forma de representar tipos genéricos, por lo que esta clase lo hace. Obliga a los clientes a crear una subclase de esta clase que permite recuperar la información de tipo incluso en tiempo de ejecución.

Por ejemplo, para crear un tipo literal para List<String>, puede crear una clase interna anónima vacía:

TypeToken<List<String>> list = new TypeToken<List<String>>() {};

Esta sintaxis no se puede utilizar para crear literales de tipo que tengan parámetros comodín, como Class<?> o List<? extends CharSequence>.

Kotlin:

Si necesitas hacerlo en Kotlin puedes hacerlo así:

val myType = object : TypeToken<List<JsonLong>>() {}.type
val logs = gson.fromJson<List<JsonLong>>(br, myType)

O puede ver esta respuesta para varias alternativas.

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"
    ]
}

Entonces, si desea guardar la lista de matrices de módulos en sus SharedPrefrences, entonces:

1- convertirá su lista de matrices devuelta para formato json usando este método

public static String toJson(Object jsonObject) {
    return new Gson().toJson(jsonObject);
}

2- Guárdalo en preferencias compartidas

PreferencesUtils.getInstance(context).setString("players", toJson((.....ArrayList you want to convert.....)));

3- para recuperarlo en cualquier momento, obtenga JsonString de las preferencias compartidas de esa manera

String playersString= PreferencesUtils.getInstance(this).getString("players");

4- conviértalo 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 of Objects. Espero que le ayude al usar Gson Library.

Si desea utilizar matrices, es bastante simple.

logs = gson.fromJson(br, JsonLog[].class); // line 6

Proporcionar la JsonLog como una matriz JsonLog[].class

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *