複雑なオブジェクトの配列をデシリアライズしたい
たとえば、私はオブジェクトを持っていますMyTestObject
public class MyTestObject{
String param1;
String param2;
int param3;
}
今、私は名前付きのオブジェクトの配列を持っていますMyTestObject
私のjsonは次のようになります
{
[
"param1":"something1",
"param2:"something2",
"param3":3
],
[
"param1":"something1",
"param2:"something2",
"param3":3
],
[
"param1":"something1",
"param2:"something2",
"param3":3
]
}
これはデシリアライゼーションのための私のコードです
public static <T> List<T> fromJSON(String json, Class<T> className) {
GsonBuilder builder = new GsonBuilder();
builder.serializeNulls();
Type myType = new TypeToken<List<T>>() {
}.getType();
Gson g1 = builder.create();
List<T> objects = (List<T>) g1.fromJson(json, (Type) myType);
for (T object : objects) {
Log.d(TAG, "object: " + object + " class " + object.getClass());
}
return objects;
}
ArrayList<MyTestObject> objects = fromJSON(myjson,MyTestObject.class);
配列自体は正しく逆シリアル化されますが、その中のオブジェクトは正しいクラスではなく、型ですcom.google.gson.internal.LinkedTreeMap
タイプにする必要があるときMyTestObject
どうすればこれを修正できますか?