我正在使用Spring Boot,Jackson和Hibernate作为带有REST(或多或少的REST..(API的基本后端。
现在的问题是,我想使用实体,而不想使用 dto 来保持低复杂性。
问题是,当我检索一个带有集合的实体时,杰克逊会获取东西,是的,里面有一个圆圈。
我希望能够使用弹簧数据、杰克逊和实体类,但手动控制关联。
我不想用JsonIgnore 或其他注释来配置它。
咔嚓!
- 使用
@JsonIgnore
- 使用
@JsonManagedReference
(类似这样(并@JsonBackReference
- 我的最爱 - 使用
@JsonView
为什么?
- 将从序列化/反序列化中排除不需要的属性
- 显式地解决循环依赖序列化/反序列化
- 使有效负载尽可能小 - 这允许你选择应为给定终结点序列化的属性。
哪一个最适合您?
好吧,这取决于你,但从描述来看,看起来 2 是要走的路(可能与 3 相结合( 祝你好运!
DTO是更复杂的场景,尤其是在入站端。对于简单用例的动态过滤,我为 jackson 编写了一个插件来使用antpath样式过滤。可能它可以帮助您:
https://github.com/Antibrumm/jackson-antpathfilter