目前我正致力于使用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跳过特定课程中的字段。
答案 0 :(得分:1)
我想在A上排除一个,但不在B上排除。
然后将字段 a 声明为transient
Class A {
var transient a;
var b;
}
Class B {
var a;
var c;
}
Class C {
class A;
class B;
}