2013-05-17 2 views
0

J'essaie d'obtenir la liste d'amis de l'utilisateur à partir de Facebook.JAVA Google App Engine + API Facebook + GSON = Problème avec Javabean

Le problème semble être le Javabean ...

FBUser fbuser = new Gson().fromJson(jsonStr, FBUser.class); 



public class FBUser implements Serializable { 

    private static final long serialVersionUID = -3154429420153433117L; 

    private String id; 
    private String name; 
    private String email; 

    private Friends friendsList = new Friends(); 

    private FBUser() { } 

    public String getId() { 
     return id; 
    } 

    public void setId(String id) { 
     this.id = id; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public String getEmail() { 
     return email; 
    } 

    public void setEmail(String email) { 
     this.email = email; 
    } 

    public List<Data> getFriendsList() { 
     return friendsList.getData(); 
    } 

    public static class Friends implements Serializable { 

     private static final long serialVersionUID = 6991758772193514527L; 

     private List<Data> data; 

     private Friends() { } 

     public List<Data> getData() { 
      return data; 
     } 

     public void setData(List<Data> data) { 
      this.data = data; 
     } 

     public class Paging implements Serializable { 

      private static final long serialVersionUID = 1689816298710621080L; 

      private String next; 

      private Paging() { } 

      public String getNext() { 
       return next; 
      } 

      public void setNext(String next) { 
       this.next = next; 
      } 

     } 

    } 

    public class Data implements Serializable { 

     private static final long serialVersionUID = -5008541658519841090L; 

     private String id; 
     private String name; 

     private Data() { } 

     public String getId() { 
      return id; 
     } 

     public void setId(String id) { 
      this.id = id; 
     } 

     public String getName() { 
      return name; 
     } 

     public void setName(String name) { 
      this.name = name; 
     } 

    } 

} 

Json:

json: {"id":"10861234","name":"Whatever","email":"whatever\u0040gmail.com","friends":{"data":[{"name":"Someone","id":"10861234"},{"name" ...43"}],"paging":{"next":"https:\/\/graph.facebook.com\/10861234\/friends..."}}} 

Les champs ID, nom et votre email que je peux récupérer avec succès ... mais le friendslist est nulle. .. = ( Peut-être est la façon dont je suis en train de l'obtenir de la classe imbriquée, des suggestions à ce sujet?

Répondre

2

il n'y a pas friendsList dans votre JSON (ou, il n'y a pas friends dans votre classe Java - quelle que soit la façon dont vous souhaitez l'examiner). Gson ignore silencieusement tout élément du JSON qui n'est pas présent dans vos classes. Vous avez un champ friends dont la valeur est un objet. Cet objet a un champ data qui est un tableau d'objets et un champ paging qui est un autre objet.

Vous devez écrire des classes Java correspondant à cette structure. Tu es ... proche.

Dans votre changement FBUser de classe:

private Friends friendsList = new Friends(); 

à:

private Friends friends = new Friends(); 

ou:

@SerializedName("friends") 
private Friends friendsList = new Friends(); 

Ensuite, dans votre Friends classe, vous devez ajouter:

private Paging paging = new Paging(); 

Notez également que vous n'avez pas besoin d'initialiser ces valeurs sauf si vous ne voulez pas qu'elles soient non nulles lorsqu'elles utilisent ces classes ailleurs.

+0

Merci, c'était, je pourrais résoudre correctement mon problème, merci! – Newbzin

Questions connexes