[英]Gson with static type, or runtime type
我正在使用Gson从层次结构中序列化一个类,这是我的概念验证代码:
import com.google.gson.Gson;
class A {
public String aField;
}
class B extends A {
public String bField;
}
class Main {
static public void main(String[] args) {
B b = new B();
b.aField = "field from a";
b.bField = "field from b";
A a = b;
Gson gson = new Gson();
System.out.println(gson.toJson(a));
}
}
打印出:
{"bField":"field from b","aField":"field from a"}
因此,我们可以看到Gson使用了要序列化的对象的动态类型的字段(类B)。 但。 有没有办法让Gson使用对象的静态类型(类A)? 我想要点东西
{"aField":"field from a"}
谢谢。
正如@ njzk2发布的那样,我必须将toJson(Object src, Type srcType)
与A的类一起使用,例如gson.toJson(a, A.class)
。
对于其他没有像我这样细小的细节的人:
您必须使用A.class,而不是a.getClass()。 前者是任何类的标识符,但是后者(如文档所述)返回对象的运行时类。
谢谢@ njzk2。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.