À l'aide de la bibliothèque Gson, comment convertir une chaîne JSON en une ArrayList
classe personnalisée JsonLog
? Fondamentalement, JsonLog
est une interface implémentée par différents types de journaux créés par mon application Android - journaux SMS, journaux d'appels, journaux de données - et celaArrayList
c'est une collection de tous. Je reçois toujours une erreur à la ligne 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
}
}
Il semble que le compilateur ne comprenne pas que je fais référence à un type ArrayList
. Que fais-je?
Réponses:
Vous pouvez utiliser TypeToken pour charger la chaîne json dans un objet personnalisé.
Documentation:
Kotlin:
Si vous devez le faire dans Kotlin, vous pouvez le faire comme ceci:
Ou vous pouvez voir cette réponse pour différentes alternatives.
la source
{ }
avant.getType()
Votre échantillon JSON est:
donc si vous voulez enregistrer une liste de modules dans vos SharedPrefrences:
1- convertira votre liste d'arrays retournée au format json en utilisant cette méthode
2- Enregistrez-le dans des pré-recréations partagées
3- Pour le récupérer à tout moment, obtenez JsonString à partir des préférences partagées comme ça
4- Convertissez-le à nouveau en liste de tableaux
cette solution est également réalisable si vous souhaitez analyser ArrayList of Objects J'espère que cela vous aidera en utilisant Gson Library .
la source
Si vous souhaitez utiliser des tableaux, c'est assez simple.
Fournir le
JsonLog
sous forme de tableauJsonLog[].class
la source
OU
la source
Pourquoi personne n'a écrit cette manière simple de convertir une chaîne JSON dans List ?
la source
Je ne suis pas sûr de gson mais c'est comme ça que vous le faites avec Jon.sample j'espère qu'il doit y avoir une manière similaire d'utiliser gson
{"Joueurs": ["joueur 1", "joueur 2", "joueur 3", "joueur 4", "joueur 5"]}
================================================
la source
Vous avez une chaîne comme celle-ci.
Ensuite, vous pouvez le convertir en ArrayList via Gson comme
Votre classe HotelInfo devrait aimer cela.
la source