Java 使用GSON从序列化中排除属性
我正在使用gson序列化我的类。我有一些属性实现了排除策略以避免循环引用。下面是一个简单的例子:Java 使用GSON从序列化中排除属性,java,serialization,gson,Java,Serialization,Gson,我正在使用gson序列化我的类。我有一些属性实现了排除策略以避免循环引用。下面是一个简单的例子: class A{ B b; } class B implements ExclusionStrategy{ A a String str; ... implements exclusion strat for class A } 但是,不调用A上的排除策略。它仍然试图序列化类B中的属性A。关于如何实现这一点,有什么想法吗?如果我只是尝试序列化类B,它就可以工作,所以我知道排除策略可以
class A{
B b;
}
class B implements ExclusionStrategy{
A a
String str;
... implements exclusion strat for class A
}
但是,不调用A上的排除策略。它仍然试图序列化类B中的属性A。关于如何实现这一点,有什么想法吗?如果我只是尝试序列化类B,它就可以工作,所以我知道排除策略可以工作
它似乎并不适用于包含类的属性。也许我需要向类A添加一些内容,以便它知道它的某些属性确实包含排除策略
编辑:
生成的JSON应该类似于:
{
B
{
'str':'some str'
}
}
您是如何实施排除的?你是怎么注册的?您希望生成的JSON看起来像什么?您当前是否从循环引用中获得堆栈溢出?是的,我获得堆栈溢出。我已经在类B中实现了exlcusion策略,以避免序列化类A。我确信这就是stackoverflow的来源。然而,我只序列化类A。即使我序列化类A,如果类B中包含排除类,是否有方法注册排除类?您是否使用
GsonBuilder#setExclutionStrategies
?哦,如果您已经序列化A
,是否要跳过B.A
?反之亦然?换句话说,如果只序列化aB
,则希望跳过a.B,如果序列化aa
,则希望跳过B.a
?是的,就是这样。它只需要序列化一次,以避免循环引用