google gson LinkedTreeMap classe convertie en myclass
Je savais que cette question a été posée avant. En raison de mon novice compétences en java et android. Je ne peux pas résoudre ce problème depuis plus d'une semaine.
Un de mes ami et je l'élaboration d'un projet android étaient il ya un couple de choses comme cela.
Les plus curieux de ces choses est, c'est seulement à partir de quand je l'ai télécharger et de le tester à partir de Google play store. Pas de local android studio d'installation ou de mode de débogage.
Quel pourrait être le problème ici, ou ce retour liste qui est totalement faux ?
Mon ami convaincre que ce code renvoie correctement, mais à partir de play store, l'installation c'est toujours une erreur.
Veuillez me suggérer où devrais-je continuer à creuser?
@Override
public void promiseMethod(JSONObject object) {
if (object != null) {
if (object.has(DO_SERVICES)) {
vehicleDetails = new ArrayList < Object[] > (1);
List < String > vehicleNoList = new ArrayList < String > (1);
List < String > serviceList = new ArrayList < String > (1);
try {
Gson gson = new Gson();
JSONObject jsonObj = new JSONObject(object.get(DO_SERVICES)
.toString());
servDto = gson.fromJson(jsonObj.toString(),
ServiceDto.class);
if (servDto.getServiceDto() instanceof List) {
List < DoServiceDto > doServiceList = servDto.getServiceDto();
Exception est
java.lang.ClassCastException: com.google.gson.interne.LinkedTreeMap ne peut pas être lancé pour com.gaurage.dto.DoServiceDto
au com.gaurage.de l'utilisateur.User_Test_Main.promiseMethod(Source Inconnue)
source d'informationauteur Log.d
Vous devez vous connecter pour publier un commentaire.
La sérialisation et la Désérialisation des Types Génériques
Lorsque vous appelez la méthode toJson(obj), Gson appels obj.getClass() pour obtenir des informations sur les champs de sérialiser. De même, vous pouvez généralement passer MyClass.class objet dans le fromJson(json, MyClass.class) de la méthode. Cela fonctionne bien si l'objet est un non-type générique. Toutefois, si l'objet est d'un type générique, puis le type Générique de l'information est perdue à cause de Java Type d'Effacement. Voici un exemple illustrant le point:
Le code ci-dessus ne parvient pas à interpréter la valeur comme de type Bar parce Gson invoque liste.getClass() pour obtenir ses informations de classe, mais cette méthode retourne un cru classe, Foo.class. Cela signifie que Gson a aucun moyen de savoir que c'est un objet de type Foo, et pas seulement de la plaine Foo.
Vous pouvez résoudre ce problème en spécifiant le bon type paramétré pour votre type générique. Vous pouvez le faire en utilisant la TypeToken classe.
J'ai de classe Parent et enfant de la classe de certains types de Liste. Comme cette classe parent, j'ai 30 fichiers. Je l'ai résolu comme ça.
La chose la plus importante est, je ne peux pas reproduire cette erreur en test local à partir d'Android studio. Ce problème apparaît uniquement, Quand je générer signé apk et les publier en application PlayStore ont été l'application s'arrête, et dit le rapport Ne peut pas lancer de LinkedTreeMap myclass.
Il m'était difficile de reproduire le même résultat de mon test local (comprend le mode de Débogage).