目前我正在使用 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 annotations Nishant 提供的答案与我的想法相符。但我觉得这个解决方案并不完全正确,因为下面的条件是错误的。
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/