2017-07-03 7 views
1

J'utilise LoganSquare avec Retrofit pour consommer des données d'un service Web.Désérialise le champ imbriqué de JSON à l'aide de LoganSquare

Pour une API particulière, le service Web renvoie une réponse JSON relativement complexe, et la seule information qui m'intéresse est celle qui est imbriquée à deux couches de profondeur. par exemple,

{"outer": { "middle": { "inner": ... }}} 

Depuis que je suis seulement intéressé par la valeur inner, je crée un objet de données comme:

@JsonObject 
class MyData implements Serializable { 
    @JsonField(name = "outer.middle.inner") 
    public String inner; 
} 

et je l'ai mis en correspondance la valeur de retour du service Web à ce type de données .

Cependant, il semble que c'était juste un vœu pieux que cette syntaxe point (outer.middle.inner) fasse ce que j'avais espéré, car le champ n'est pas mappé lors de l'invocation réussie de la méthode.

Est-il possible de mapper un champ d'un objet JSON LoganSquare à une valeur imbriquée?

Répondre

0

Je pense que vous devez déclarer chaque JsonObject comme une classe interne si:

@JsonObject 
public class MyData implements Serializable { 
    @JsonObject 
    public static class Outer { 
     @JsonObject 
     public static class Middle { 
      @JsonField 
      public String inner; 
     } 
    } 
}