当前位置: 首页 > 面试题库 >

Jackson-具有双向关系的实体的序列化(避免循环)

范朗
2023-03-14
问题内容

我有两个实体:

Parent {
   Child[] children;
}

and

Child {
   Parent parent;
}

我知道@JsonBackReference@JsonManagedReference。如果我要序列化的实例,那么它们很好Parent

但是我还需要传输的实例,Child并且我想parent填充该字段。

换一种说法:

  1. 在序列化Parent时应该有,children但是其父字段可能为空(可以通过使用json参考注释解决)。
  2. 在序列化时,Child它应该parent带有它们children(但children不必parent填充。)

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

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


问题答案:

Jackson 2.0确实支持完整的循环对象引用。有关示例,请参见“ Jackson
2.0发布

”(“处理任何对象图,甚至循环图!”部分)。

基本上,@JsonIdentityInfo对于需要id / idref样式处理的类型,您将需要使用new
。在您的情况下,它既是类型Parent又是Child类型(如果一个扩展了另一个,只需将其添加到超级类型中就可以了)。



 类似资料:
  • 我有两个实体: 我知道和。如果我序列化的实例,那么它们是很好的。 但是我还需要传输的实例,并且我希望填充字段。 换句话说: null

  • 在这个网络项目中,我使用了Hibernate和jersey,这两个元素与Jackson一起使用。对于Hibernate,我有3个实体类,它们反映了数据库表的结构,并且具有“一对多”和“多对一”关系。绑定字段被注释为和。这些类的对象必须用json序列化。为了避免序列化过程中出现错误,绑定字段还被注释为和。由于类对象的序列化,结果如下: 它不适合我,我决定编写自定义序列化程序。因此,我希望看到以下js

  • 问题内容: 我正在使用Jackson将JPA模型序列化为JSON。 我有以下课程: 和 我正在使用POJO映射从模型序列化为JSON。当我序列化Parent对象时,我得到以下JSON: 但是当我序列化一个Child时,我得到以下JSON: 缺少对父级的引用。有办法解决吗? 问题答案: 我认为您必须在@JsonIdentityInfo和@ JsonBackReference / @ JsonMana

  • 我正在使用Jackson将我的JPA模型序列化到JSON中。 我有以下课程: 和 我正在使用POJO映射从模型序列化到JSON。当我序列化父对象时,我得到以下JSON: 但当我序列化一个子对象时,会得到以下JSON: 缺少对父级的引用。有没有办法解决这个问题?

  • 如果是使用Spring数据/JPA的拥有方,用双向关系表示下表的最佳方式是什么?我希望能够使用保存,并保存。 节点表 身份证 node_node表 > 节点标识2 这是我到目前为止所拥有的。以为拥有方的双向关系,这意味着当我在

  • 问题内容: 我正在尝试使用symfony序列化程序组件反序列化具有关系的实体。这是我的实体: 和 流派实体 : 现在在我的 控制器操作中, 我正在尝试以下操作: 还有我的 json数据 : 但是我得到了下一个 错误 : 给定类型为“ AppBundle \ Entity \ Genre”,“ array”的预期参数(500内部服务器错误) 是否可以使用内部具有关系的实体反序列化json请求? 感谢