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.
中有解释
各位,
此代码片段有效:
@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.