我的一个函数会获取Type变量。有时它可以是java.util.List<Test$MyClass>
或java.util.List<java.lang.String>
,那么我该如何识别它们?
if (type instanceof List) {
}
两者都是列表类型,但类型不同。因此上面的代码无法工作。 我想区分这两种列表类型。
我正在使用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>();
,而且我也想反序列化 myList2
。这是 Google Gson 的一部分。