0

我正在尝试从 Facebook 获取用户的好友列表。

问题似乎是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: {"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 为空... =(也许这是我试图从嵌套类中获取它的方式,对此有什么建议吗?

4

1 回答 1

2

friendsList您的 JSON中没有(或者,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();

另请注意,您不必初始化这些值,除非您在其他地方使用这些类时特别不希望它们为非空值。

于 2013-05-17T04:26:22.650 回答