【发布时间】:2016-07-08 22:20:13
【问题描述】:
我有一堂课Shop
public class Shop {
private String name;
private ArrayList<Fruitable> fruits;
public String toJson() {
Gson gson = new Gson();
return gson.toJson(this, Shop.class)
}
}
Apple和Orange是实现Fruitable接口的两个类。
Fruitable:
public interface Fruitable {
String getColor();
}
Apple:
public class Apple implements Fruitable {
private int Id;
@Override
public String getColor() {
return "red";
}
}
Orange:
public class Orange implements Fruitable {
private int Id;
@Override
public String getColor() {
return "orange";
}
}
我可以使用 GSON 序列化 Shop,但是我无法正确反序列化它。
当我反序列化时,ArrayList<Fruitable> 有对象,但对象是null。
这是因为 GSON 需要一个具体实例才能反序列化。
我知道我可以在 Shop 中实现 JsonDeserializer。
但是,我可以在 Apple 和 Orange 内部实现一些反序列化机制,以便它们自己反序列化吗?
如果这不可能,并且我必须在 Shop 中编写反序列化程序,我可以编写代码来反序列化 fruits 属性而不是其他属性,即GSON 是否会反序列化剩余的属性,假设它们是具体实例?
【问题讨论】:
标签: android serialization deserialization json-deserialization gson