Tengo un JsonObjectnombre "mapping"con el siguiente contenido:
{
    "client": "127.0.0.1",
    "servers": [
        "8.8.8.8",
        "8.8.4.4",
        "156.154.70.1",
        "156.154.71.1"
    ]
}Sé que puedo obtener la matriz "servers"con:
mapping.get("servers").getAsJsonArray()Y ahora quiero analizar eso JsonArrayen unjava.util.List ...
¿Cuál es la forma más sencilla de hacer esto?

Gson.JsonArrayimplementosIterable. Es solo que también estoy encontrando nuevas formas además de agregar una nueva biblioteca.Respuestas:
Definitivamente, la forma más fácil de hacerlo es utilizando la función de análisis predeterminada de Gson
fromJson().Existe una implementación de esta función adecuada para cuando necesita deserializar en cualquier
ParameterizedType(por ejemplo, cualquieraList), que esfromJson(JsonElement json, Type typeOfT).En su caso, solo necesita obtener el valor
Typede aList<String>y luego analizar la matriz JSON en esoType, así:En su caso
yourJsones aJsonElement, pero también podría ser aString, anyReadero aJsonReader.Es posible que desee echar un vistazo a la documentación de la API de Gson .
fuente
Typese puede encontrar en qué paquete?Typees una interfaz incorporada de Java ubicada en el paquetejava.lang.reflectgetString()lugar deget()o de lo contrario me.fromJson()estaba quejando.El siguiente código está usando
com.google.gson.JsonArray. Imprimí el número de elementos en la lista, así como los elementos en la listaSALIDA
fuente
Leí la solución del sitio web oficial de Gson aquí
Y este código para ti:
Mostrar resultado en el monitor:
fuente
new Gson().fromJson()Pude hacer que el mapeo de la lista funcionara con solo usar
@SerializedNamepara todos los campos ... noTypeera necesaria ninguna lógica .Al ejecutar el código, en el paso n. ° 4 a continuación , a través del depurador, puedo observar que el
List<ContentImage> mGalleryImagesobjeto se completó con los datos JSONHe aquí un ejemplo:
1. El JSON
2. Clase Java con la Lista
3. Clase Java para los elementos de la lista
4. El código Java que procesa JSON
fuente
Dado que comienza con
mapping.get("servers").getAsJsonArray(), si tiene acceso a GuavaStreams, puede hacer lo siguiente:Note
StreamSupportno podrá trabajar en elJsonElementtipo, por lo que es insuficiente.fuente