Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用GSON从序列化中排除属性_Java_Serialization_Gson - Fatal编程技术网

Java 使用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,它就可以工作,所以我知道排除策略可以

我正在使用gson序列化我的类。我有一些属性实现了排除策略以避免循环引用。下面是一个简单的例子:

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
?反之亦然?换句话说,如果只序列化a
B
,则希望跳过a.B,如果序列化a
a
,则希望跳过
B.a
?是的,就是这样。它只需要序列化一次,以避免循环引用