我使用dropwizard创建REST API。但我不明白,如何配置Jackson从WRAP_ROOT_VALUE / UNWRAP_ROOT_VALUE功能中排除某些类?现在我收到了一个json主体的帖子请求,它没有包含根元素名称:
{
"identification": "dummyuser",
"password":"dummypass"
}
这应该映射到java类LoginRequest:
public class LoginRequest {
public String identidication;
public String passwrd;
}
我还收到了一些包含根元素名称的类型的请求:
{
"user":{
"id":12345,
"name":"John Doe"
}
}
这应该映射到:
@JsonRootName("user")
public class User {
...
}
要使root元素工作,我必须包括:
environment.getObjectMapper().configure(SerializationFeature.WRAP_ROOT_VALUE, true);
environment.getObjectMapper().configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true);
但现在它适用于所有课程。这意味着每当登录请求进入时,服务器都会抛出错误,因为它希望看到根元素名称。
答案 0 :(得分:0)
将endDate
与JsonTypeName
一起使用,而不是JsonTypeInfo
:
JsonRootName
用于绑定带注释的类具有的逻辑名称的注释。与JsonTypeInfo(特别是其JsonTypeInfo.use()属性)一起使用,以建立类型名称和类型之间的关系。
用于配置if和如何使用类型信息以及JSON序列化和反序列化的详细信息的注释,以保留有关Object实例的实际类的信息。这必须是多态类型,也可能需要链接抽象声明的类型和匹配具体实现。