【发布时间】:2018-10-16 09:10:32
【问题描述】:
我正在开发一个公开 REST API 的 Spring Boot Web 应用程序,但我遇到了 JSON 序列化问题。
假设我有两个类 A 和 B,它们是一对多的双向关系。
这意味着我有这样的东西:
public class A {
private List<B> bList;
...
}
和
public class B {
private A owner;
...
}
说到JSON序列化这个,当然是有循环的。
这是我的问题:
- 在专注于
A的 API 方法中(例如“给我数据库中所有 As 的列表”),我想要一个 JSON 序列化,其中:-
A对象确实包含Bs 的列表 -
B对象不包含其 A 所有者
-
- 在专注于
B的 API 方法中(例如“给我数据库中所有Bs 的列表”),我想要一个 JSON 序列化,其中:-
A对象不包含其Bs 的列表 -
B对象确实包含其A所有者
-
我相信我可以让它与@JsonView 注释一起使用,但我认为这不是一个优雅的解决方案。在我的应用程序(有两个以上的类)中,我需要创建和管理至少 4 或 5 个 JsonView:所以在我的模型类中,对于每个属性,我必须管理一堆乱七八糟的 @JsonView 注释。相反,我认为模型类不应该意识到它们具有不同的 JSON 表示,具体取决于 API 方法。
我搜索了如何使用自定义 JSON 序列化程序,发现 Jackson 允许使用其 SimpleModule 来做到这一点。然而,SimpleModule 似乎不允许根据具体情况选择使用哪个序列化器(它总是使用最后添加的序列化器)。
所以我现在有点不知所措。有人知道让控制器选择如何序列化类的干净方法吗?
【问题讨论】:
标签: java json spring-boot jackson json-serialization