gpt4 book ai didi

java - Gson:使用不带注释的方式排除特定类上的字段 - 2

转载 作者:行者123 更新时间:2023-12-01 09:14:11 28 4
gpt4 key购买 nike

目前我正在使用 Gson 将 java 对象序列化为 JSON。我试图跳过一个类中的字段,但不跳过另一个类中的字段。

示例代码:

Class A {
var a;
var b;
}

Class B {
var a;
var c;
}

Class C {
class A;
class B;
}

我只想在 A 上排除 a,但不在 B 上排除。我无法在字段上添加注释,因为该对象不属于我所有,也无法访问对象 A 并手动删除 a。我正在寻找一些通用方法。

类似问题:Gson: How to exclude specific fields from Serialization without annotationsNishant 提供的答案与我的想法相符。但我觉得这个解决方案并不完全正确,因为下面的条件是错误的。

f.getDeclaringClass() == c

GetDeclaringClass 返回类的类型而不是父类。

我使用 Gson 编写了类似的自定义排除策略。通过排除策略,我可以执行以下操作

shouldSkipClass(class)

shouldSkipField(fieldAttributes).

但如果此 fieldAttributes 仅存在于提供的类中,我希望两者的组合都会跳过。

shouldSkipFieldUnderClass(class, fieldAttributes)

还有其他方法可以达到同样的效果吗?还是我上面做错了什么?请向我提供使用 Gson 跳过特定类中的字段的建议。

最佳答案

I want to exclude a only on A, but not on B.

然后将字段a声明为transient

Class A {
var transient a;
var b;
}

Class B {
var a;
var c;
}

Class C {
class A;
class B;
}

关于java - Gson:使用不带注释的方式排除特定类上的字段 - 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40694309/

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