我有一个基类
public class Box<T> {
private T entity;
public T getEntity() {
return entity;
}
void setEntity(T entity) {
this.entity = entity;
}
}
它有2个实现。
// Class Person
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
// Class Machine
public class Machine {
private String macAddress;
private String type;
public Machine(String macAddress, String type) {
this.macAddress = macAddress;
this.type = type;
}
}
如果我想序列化A类或B类对象,我将这样做
Type typeTokenPerson = new TypeToken< Box <Person>>() {}.getType();
String userJson = gson.toJson(boxWithPersonObject, typeTokenPerson);
但是这里的问题是我需要在编译时知道类型。我有一个用例,在编译时我不知道这个,换句话说,我有一个json,我想把它反序列化成Person或者Animal,我想在运行时根据一些条件来做这个。有没有办法用Gson来做这个?
示例:假设我们有一个这样的json
{
"entity": {
"name": "ABC",
"age": 10
}
}
这是Person类型。我想将它反序列化为Box类型的对象
1条答案
按热度按时间hof1towb1#
Gson可以这样做。