相关疑难解决方法(0)

如何解决由hibernate双向映射引起的json序列化器中的循环引用?

我正在编写一个序列化程序来将POJO序列化为JSON,但却陷入循环引用问题.在hibernate双向一对多关系中,父引用子和子引用回父,这里我的序列化器死了.(参见下面的示例代码)
如何打破这个循环?我们可以获取对象的所有者树,以查看对象本身是否存在于其自己的所有者层次结构中的某个位置?任何其他方式来查找引用是否将是循环的?或任何其他想法来解决这个问题?

java serialization json hibernate

75
推荐指数
5
解决办法
9万
查看次数

杰克逊 - 具有双向关系的实体的序列化(避免周期)

我有两个实体:

Parent {
   Child[] children;
}

and 

Child {
   Parent parent;
}
Run Code Online (Sandbox Code Playgroud)

我知道@JsonBackReference@JsonManagedReference.如果我正在序列化实例,那么它们很好Parent.

但我还需要传输实例,Child并希望parent填充该字段.

换一种说法:

  1. Parent它的序列化应该有,children但他们的父字段可能是空的(可以通过使用json引用注释来解决).
  2. Child它的序列化应该parent与他们children(但children不必parent填充.

有没有办法使用标准的Jackson功能来解决它​​?

即跳过已经序列化的实体的序列化,而不是标记符合条件或不符合序列化条件的字段.

java json cycle jackson bidirectional-relation

43
推荐指数
2
解决办法
3万
查看次数

Jackson JSON序列化 - 指定递归级别

我正在使用SpringMVC 3.2.4,我希望使用Jackson2将对象序列化为JSON输出.

该对象具有递归属性.如果我尝试使用默认的Jackson ObjectMapper序列化它,我会收到一个递归错误.我意识到我可以@JsonIdentityInfo(generator=ObjectIdGenerators.IntSequenceGenerator.class)用来防止递归,但是,我实际上希望递归使得在胡子模板中更容易解析.但是,我想限制递归级别.

反正有没有指定杰克逊序列化器只递归1级?如果我需要创建自己的序列化程序,我可以注册它,使其仅用于特定的对象类吗?

正如一些评论所指出的那样,已经存在另一个与此问题非常密切相关的问题:Jackson JSON序列化,通过级别定义来避免递归.然而,在那个问题中,接受的答案(以及其他答案)都表明如何通过使用避免杰克逊的递归@JsonIdentityInfo.在这种特殊情况下,我不打算限制它; 而我想要它.但是,我只想限制递归的深度.

此外,引用的SO问题提供了一些Jackson文档的链接; 我已经有了这些文档,但坦率地说杰克逊的文档非常缺乏.它们指示如何注册序列化程序,但不指示它是如何构造的.也没有任何迹象表明如何确定序列化器的递归级别.最后,没有迹象表明是否/如何在Spring中为Jackson注册序列化程序以应用于特定类型的类.

serialization spring json spring-mvc jackson

6
推荐指数
1
解决办法
3431
查看次数