Spring MVC @RequestBody 到接口而不是 class

Spring MVC @RequestBody into an Interface instead of a class

各位,

此代码片段有效:

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

请注意 "Member" 是一个接口,而不是 class。

这行不通。

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

所以我可以将 Members 变成 JSON 但我不能接收 JSON 变成 Members。如果我将保存的参数从列表更改为成员 classes 之一的列表,那么它工作正常,但它确实弄乱了我的代码。

我该如何解决这个问题?

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

Jackson 提供 @JsonTypeInfo 作为一种描述继承层次结构的方式,并给出如何反序列化 JSON 的提示。但是,这需要您修改 JSON 并添加这些提示。这在文档 here.

中有解释