gpt4 book ai didi

java - Gson 具有静态类型或运行时类型

转载 作者:行者123 更新时间:2023-11-30 08:16:11 25 4
gpt4 key购买 nike

我正在使用 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()。前者是任何类的标识符,但后者返回,如 documentation表示对象的运行时类。

谢谢@njzk2。

关于java - Gson 具有静态类型或运行时类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29634894/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com