2013-05-17 95 views
0

我想从Facebook获取用户的朋友列表。JAVA Google App Engine + Facebook API + GSON = Javabean问题

这个问题似乎是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..."}}} 

字段ID,姓名和电子邮件我能成功地获取......但friendsList为空。 .. =( 也许这是我试图从嵌套类获得它的方式,对此有什么建议?

回答

2

你的JSON中没有friendsList(或者,没有friends在你的Java类 - 无论你想看看它)。 Gson默默地忽略了JSON中不存在于你的类中的任何东西。

您有一个字段friends其值是一个对象。该对象有一个字段data,它是一个对象数组,并且是另一个对象字段paging

您需要编写与该结构匹配的Java类。你...接近。

在你FBUser类变化:

private Friends friendsList = new Friends(); 

到:

private Friends friends = new Friends(); 

或:

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

然后你需要添加:

private Paging paging = new Paging(); 

另请注意,您不必初始化这些值,除非您在别处使用这些类时明确不希望它们为非空值。

+0

谢谢,就是这样,我可以很好地解决我的问题,谢谢! – Newbzin