平时使用 Gson
可能也就使用下基本功能,但是你对 Gson
真的了解吗?
对于含有内部类的嵌套类序列化
对于静态嵌套类, Gson
可以非常容易地进行序列化。但是对于纯内部类,Gson
不能进行反序列化,因为它们的无参构造函数还要对反序列化时不可用的 Object 进行引用。比如,当反序列化 Hand 时,需要引用 Person,但是此时 Person 不能被引用。
public class Person {
private Hand hand;
private class Hand {
private String thumb;
}
}
解决办法有两种:
- 指定内部类为静态类,
- 给内部类提供一个自定义的实例生成器。
public class InstanceCreatorForHand implements InstanceCreator<Person.Hand> {
private final Person person;
public InstanceCreatorForHand(Person person) {
this.person = person;
}
public Person.Hand createInstance(Type type) {
return person.new Hand();
}
}
数组实践
- 序列化
Gson gson = new Gson();