-1
votes

Obtenez tous les objets JSON imbriqués avec GSON: la désérialisation

val balance =
                GsonBuilder()
                    .create()
                    .fromJson<ArrayList<BalanceDetail>>(
                        JSONArray(data)
                            .toString(),
                        object : TypeToken<List<BalanceDetail>>() {}.type
                    )

0 commentaires

3 Réponses :


1
votes

Vous pouvez utiliser Wrapper: xxx

et désérialiser comme ceci: xxx


5 commentaires

VAL BALANCE à la fin sera LISTE du compte ou juste un objet? J'ai besoin de ArrayList


Ce sera Liste


Mais chaque fois que je dois faire obtenir (0) .account pour rendre les données ou l'attribuer à un adaptateur.


Pouvons-nous désérialiser de manière à ce que nous puissions obtenir Liste ? qui sera facile pour remplir un recyclerview


Bien sûr, vous pouvez mapper vos données sur n'importe quel type que vous souhaitez, par exemple: balail.mapnotnull {it.account} . Une autre option serait de créer personnalisé typeeadapter .



0
votes

À mon avis, vous devez simplement filtrer les éléments nuls avec list.filternotnull () fonction


0 commentaires

1
votes

Essayez:

  val balance =
        GsonBuilder()
            .registerTypeHierarchyAdapter(
                BalanceDetail::class.java,
                object : JsonDeserializer<BalanceDetail?> {
                    override fun deserialize(
                        json: JsonElement?,
                        typeOfT: Type?,
                        context: JsonDeserializationContext?
                    ): BalanceDetail? {
                        return if (json?.asJsonObject?.entrySet()?.size == 0) {
                            null
                        } else {
                            Gson().fromJson(json, BalanceDetail::class.java)
                        }
                    }

                })
            .create()
            .fromJson<ArrayList<BalanceDetail>>(
                JSONArray(value)
                    .toString(),
                object : TypeToken<List<BalanceDetail>>() {}.type
            )


1 commentaires

Merci, je vais essayer sûrement.