5

主に JSON から POJO への逆シリアル化で、GSON に問題があります。

次の JSON があります。

{
    "events": 
    [
        {
            "event": 
            {
                "id": 628374485, 
                "title": "Developing for the Windows Phone"
            }
        },
        {
            "event": 
            {
                "id": 765432, 
                "title": "Film Makers Meeting"
            }
        }
    ]
}

次のPOJOで...

public class EventSearchResult {

    private List<EventSearchEvent> events; 

    public List<EventSearchEvent> getEvents() {
        return events;
    }

}
public class EventSearchEvent {

    private int id; 
    private String title;


    public int getId() {
        return id;
    }

    public String getTitle() {
        return title;
    }
}

...そして、json入力が上記のjsonである次のコードで逆シリアル化しています

Gson gson = new Gson();
return gson.fromJson(jsonInput, EventSearchResult.class);   

ただし、イベントのリストを正しく取得できません。title と id は常に null です。私は何かが欠けていると確信していますが、何がわからないのですか。何か案が?

ありがとう

4

1 に答える 1

4

OK、私はこれを理解しました。私はこれを、前夜の睡眠がほとんどない長いコーディングの日であることを証明します!

「events」データ構造には複数の「events」が含まれ、それぞれに「event」タイプが含まれています。EventSearchEventをEventContainerという新しいクラスの下に移動する必要がありました。このイベントコンテナには、1つのフィールド「event」が含まれていました。この「イベント」は「EventSearchEvent」でした。したがって、GSONがJSON配列を反復処理すると、コンテナー(「イベント」タイプ)が表示され、そのオブジェクト内で「イベント」メンバーが検索されました。最終的にIDとタイトルが適切に読み込まれたことがわかったとき。

要するに、オブジェクト階層が正しく構築されていませんでした。

于 2010-04-26T13:25:30.263 に答える