型変数を取得する私の関数の1つ。場合によってはそうなることもありますが、どうすればそれらを識別できますかjava.util.List<Test$MyClass>
?java.util.List<java.lang.String>
if (type instanceof List) {
}
どちらもリストタイプですが、タイプが異なります。そのため、上記のコードは機能しません。2つのリストタイプを区別したいと思います。
私はそのために使用deserializer
しています。
public class Data implements JsonDeserializer<ArrayList<MyClass1>> {
public ArrayList<MyClass1> myList1 = new ArrayList<MyClass1>();
public ArrayList<MyClass2> myList2 = new ArrayList<MyClass2>();
@Override
public ArrayList<MyClass1> deserialize(JsonElement json, Type type,
JsonDeserializationContext context) throws JsonParseException {
Debug.e("", type.toString());
ArrayList<Layoutmap> data = new ArrayList<Layoutmap>();
try {
if (json.isJsonObject()) {
// my stuff
return data;
} else {
return new Gson().fromJson(json, type);
}
} catch (Exception e) {
e.printStackTrace();
}
return data;
}
}
上記のコードは機能しpublic ArrayList<MyClass2> myList2 = new ArrayList<MyClass2>();
、逆シリアル化することもできます。これはgoogleGsonmyList2
の一部です。