Android: Tentative de sérialiser ... Oublié d'enregistrer un type de carte?"
Comment convertir HashMap en JSON à l'aide de Gson.
class ClassData {
public String jsonString;
public Class classType;
}
HashMap<String, ClassData> map = new HashMap<>();
void convert(){
new Gson().toJson(map); //throws
}
Je suis à l'exception suivante
Tenté de sérialiser java.lang.Class: java.lang.Chaîne de caractères. Oublié de
enregistrer un type de carte?
OriginalL'auteur Ilya Gazman | 2015-03-21
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin pour mettre en œuvre votre propre sérialiseur pour ClassData, et puis de l'enregistrer à votre Gson Builder.
De sortie: {"key":"key"}
Lire la suite: https://sites.google.com/site/gson/gson-user-guide#TOC-Writing-a-Serializer
OriginalL'auteur Andyccs
Mon approche fonctionne pour Gson 2.3.1 avec Java 1.7, ne peut pas garantir qu'il fonctionnera avec Android.
Le problème réside dans la variable
classType
, depuis Gson ne peut pas traiter le typeClass
comme il est. Nous devons donc créer un TypeAdapter pour la Classe.Pour le faire fonctionner, vous aurez besoin d'un TypeAdapterFactory.
Et enregistrer le TypeAdapterFactory à votre Gson Builder.
Autant que je sache, vous devez utiliser un TypeAdapterFactory. Un directement enregistrés TypeAdapter
semble être ignoré lorsqu'un objet de type
Class
est rencontré.Gson transforme
HashMap
et Java des instances de classe d'objets JSON.Exemple:
registerTypeAdapter(Class.class, new ClassTypeAdapter())
travaille avec gson 2.8.5. Merci pour la solution.OriginalL'auteur json1