【发布时间】:2021-01-04 09:41:36
【问题描述】:
我有一个服务接收我的父接口作为输入,以便接收不同类型的输入。 接口定义如下:
@JsonTypeInfo(use=JsonTypeInfo.Id.NAME, include=JsonTypeInfo.As.PROPERTY)
@JsonSubTypes({
@JsonSubTypes.Type(value = Person.class, name = "person"),
@JsonSubTypes.Type(value = Employee.class , name = "employee")
})
public interface TestInterface {
}
我有一个服务可以获取 TestInterface 如下:
@RequestMapping(value="/convert", method = RequestMethod.POST)
@ResponseBody
public Person test(@RequestBody TestInterface object){}
此服务必须获得如下所示的 json,并且仅适用于具有 type 属性的文件:
{"@type":"person","name":null,"family":"fami"}
问题是当我有一个直接接收子类的服务并且我不想指定类型属性时。
@RequestMapping(value="/convertPerson", method = RequestMethod.POST)
@ResponseBody
public Person test(@RequestBody Person object){}
在此示例中,当我不发送类型属性时,我得到(缺少类型 id 属性)异常。有没有办法让它在没有类型 ID 的情况下工作? 我已经尝试了以下配置,但没有解决问题:
spring.jackson.deserialization.fail-on-missing-external-type-id-property=false
【问题讨论】:
标签: java spring-boot jackson