Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.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 在序列化过程中忽略Jackson JsonIdentityInfo_Java_Spring_Serialization_Jackson_Gson - Fatal编程技术网

Java 在序列化过程中忽略Jackson JsonIdentityInfo

Java 在序列化过程中忽略Jackson JsonIdentityInfo,java,spring,serialization,jackson,gson,Java,Spring,Serialization,Jackson,Gson,我目前在反序列化期间和在我的应用程序的某个点(与某些客户端通信期间)序列化期间使用@JsonIdentityInfo,但我的一些其他客户端根本无法使用@JsonIdentityInfo,在spring的某些方法上序列化期间是否可以忽略它 例如: [{id:5, innerobject:{id:1, name:"inner"}}, {id:6, innerobject:{id:1}}] id为6的第二个对象没有完整的innerobject,而是使用@JsonIdentityInfo忽略其余的对象

我目前在反序列化期间和在我的应用程序的某个点(与某些客户端通信期间)序列化期间使用
@JsonIdentityInfo
,但我的一些其他客户端根本无法使用
@JsonIdentityInfo
,在spring的某些方法上序列化期间是否可以忽略它

例如:

[{id:5, innerobject:{id:1, name:"inner"}},
{id:6, innerobject:{id:1}}]
id为6的第二个对象没有完整的
innerobject
,而是使用
@JsonIdentityInfo
忽略其余的对象(我们已经有了它)


关注JacksonIdentityInfo(服务器端),而不是像潜在副本中指出的那样关注客户端,事实并非如此。这是杰克逊,不是格森。

我不认为有一个简单的方法,但通过一些黑客技术,这应该是可能的。您可以做的事情是创建一个JacksonAnnotationIntrospector的自定义子类,重写查找
@JsonIdentityInfo
的方法,并防止它们检测注释

似乎需要重写的方法有
findobjectindinfo()
和可能的
findObjectReferenceInfo()
。只需从两者返回
null

然后,您可以使用
ObjectMapper
注册此内省器,使用该映射器进行的所有读取操作都类似于删除注释。 请注意,您不能动态更改内省:必须在使用前设置/更改内省。因此,如果您想在某些上下文中启用它们,则需要使用两个单独的映射器


至于如何配置Spring来使用它,我不知道,但您可能想将其子类
ObjectMapper
MyNoObjectdMapper扩展ObjectMapper
),并使其在构造函数上配置自身。

可能是的重复项,但不是重复项。。。这是一个完全不同的问题。当然,这些例子都是一样的。谢谢,最后我只是把Gson撕了下来,换成了Jackson(这非常容易)