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はnullです... =(ネストされたクラスから取得しようとしている方法かもしれませんが、何か提案はありますか?

4

1 に答える 1

2

friendsListJSONにはありません(または、 friendsJavaクラスにはありません-どちらの方法で見ても)。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();

また、これらのクラスを別の場所で使用するときに値を非 null にしたくない場合を除き、これらの値を初期化する必要がないことに注意してください。

于 2013-05-17T04:26:22.650 に答える