2017-05-26 1 views
0

Lorsque j'obtiens une liste de reddit en utilisant ce point de terminaison: https://www.reddit.com/r/Android/new/.json, j'obtiens une liste de messages, qui ont un champ edited qui vient avec false si le poste ne l'a pas pas encore édité, ou avec un horodatage long si c'est le cas.Traiter les champs JSON qui peuvent venir avec des valeurs de différents types, Android

Comment désérialiser correctement cette liste en utilisant Retrofit et Gson afin de prendre en compte cette différence de type?

Répondre

0

Essayez quelque chose comme ceci:

public class PostDeserializer implements JsonDeserializer<Post> { 
    @Override 
    public Post deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) 
     throws JsonParseException { 

     boolean notEdited = json.get("edited").getAsString().notEquals("False"); 

     if (notEdited) { 
      json.remove("edited") 
     } 

     //create new Post and then return it 

    } 
} 
+0

Vous devez étend la place d'outils 'classe JsonDeserializer' – Ricard