使用這種抽象類的工作:傑克遜1.9.0:JsonTypeInfo爲抽象類不使用列表
@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()));
}
這是爲什麼,我怎麼能強迫類型屬性?
更新:如果我將List<BasePostingDto>
更改爲BasePostingDto[]
,也包含類型屬性,但是我寧願使用列表。
+1爲數組提示:) – Boaz