0

私は別のプロジェクトでこれを実行しようとしました。これまでに見たチュートリアルによると、私は正しい方向に進んでいることはわかっていますが、この解析を正しく行うことができません。

(非常に単純化された)JSON出力:

{
"data":{
  "info":{
      "username": "something"
      "email" : "something"
   }
..
..

}

次のクラスを使用して「username」と「email」を取得しようとしています。

class ProfileResponse {
static Data data;

public static Data getData() {
    return data;
}

public static void setData(Data data) {
    ProfileResponse.data = data;
}

}

Class Data {
@SerializedName("info")
static Info info;

public static Info getInfo() {
    return info;
}

public static void setInfo(Info info) {
    Data.info = info;
}

}

class Info {
@SerializedName("username")
static String username;
@SerializedName("email")
static String email;

public static String getUsername() {
    return username;
}

public static String getEmail() {
    return email;
}

}

そして、次のようにJSON文字列を逆シリアル化します(文字列であることが問題になる可能性がありますか?)。

           Gson gson = new Gson();
                        gson.fromJson(response, ProfileResponse.class);
                        if (Info.getUsername() == null
                                || Info.getUsername().isEmpty()) {
                            System.out.println("NO USERNAME");
                        } else {
                            System.out.println("USERNAME: "
                                    + Info.getUsername());
                        }

これは、実行されるたびに「NOUSERNAME」を出力します。

4

1 に答える 1

0

staticフィールドはデフォルトでシリアル化/逆シリアル化から除外されます。

staticクラス(フィールドとメソッド)からすべてのキーワードを削除し、fromJson()正しく呼び出すと、探している結果が得られます。

Gsonは、JSONからクラスのインスタンスをインスタンス化します。クラスを変更した後、次のことを行います。

ProfileResponse pr = gson.fromJson(response, ProfileResponse.class); 
于 2013-01-01T23:03:17.907 に答える