Spring MVC @RequestBody 进入接口而不是类

tec*_*sis 3 java spring spring-mvc jackson

各位,

这段代码被剪掉了:

@RequestMapping(method = RequestMethod.GET, produces = "application/json")
public ResponseEntity<List<Member>> findByMemberKeyOrUniqueMemberId(
Run Code Online (Sandbox Code Playgroud)

请注意,“Member”是一个接口,而不是一个类。

这是行不通的。

@RequestMapping(method = RequestMethod.POST)
public ResponseEntity<String> save(@RequestBody final List<Member> members) {
Run Code Online (Sandbox Code Playgroud)

所以我可以将 Members 转换为 JSON,但无法将 JSON 接收为 Members。如果我将保存的参数从列表更改为成员类之一的列表,那么它可以正常工作,但它确实会弄乱我的代码。

我怎样才能解决这个问题?

Sot*_*lis 6

Jackson 无法(这是不可行的)猜测Member使用哪个实现来反序列化 JSON。

Jackson 提供了@JsonTypeInfo一种描述继承层次结构并给出如何反序列化 JSON 的提示。但是,这需要您修改 JSON 并添加这些提示。此处的文档对此进行了解释。