2013-05-17 94 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