使用这个抽象类:
@JsonTypeInfo(use = Id.NAME, include = As.PROPERTY, property = "type")
@JsonSubTypes({ @JsonSubTypes.Type(value = PostingTaskInstanceDto.class, name = "TI") })
public abstract class BasePostingDto {}
这个继承的类:
public class PostingTaskInstanceDto extends BasePostingDto {}
我得到了单个对象的正确序列化。这工作,使用 Spring-MVC:
@RequestMapping("/{id}")
@ResponseBody
public BasePostingDto findById(@PathVariable("id") Long id) {
return createDto(postingService.findById(id));
}
但是,如果我从遥控器检索 BasePostingDto 列表,则缺少 type 属性:
@RequestMapping("/by-user/all")
@ResponseBody
public List<BasePostingDto> findByUser() {
return createDtoList(postingService.findByUser(AuthUtils.getUser()));
}
为什么会这样,我该如何强制 type 属性?
List<BasePostingDto>
更新:如果我更改为,则 type 属性也包括在内BasePostingDto[]
,但是我更愿意使用 List。