Gsonを使用して、ネストされたジェネリッククラスを逆シリアル化しようとしています。クラス構造は次のようになります。
ラッパーオブジェクト。簡略化されていますが、通常は、などの他のプロパティを保持します。これらのプロパティは、サーバーから-fieldstatusMessage
とともに返されます。data
public class Response<T> {
private List<T> data = null;
public List<T> getData() { return this.data; }
}
単純なクラス、data
上記の-fieldからの期待される出力(配列として):
public class Language {
public String alias;
public String label;
}
使用法:
Type type = new TypeToken<Response<Language>>() {}.getType();
Response<Language> response = new Gson().fromJson(json, type);
List<Language> languages = response.getData();
Language l = languages.get(0);
System.out.println(l.alias); // Error occurs here
ここで、json
-variableは次のようなものです。
ただし、これを行うと、次の例外が発生します(3行目、最後のコード例)。
ClassCastException:com.google.gson.internal.StringMapをbook.Languageにキャストできません
例外は、からのデータをgetData()
変数に格納する場合(または1つとして使用する場合)にのみ発生します。
どんな助けでも大歓迎です。