仅对某些类

时间:2015-05-17 15:24:05

标签: java json jackson dropwizard

我使用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);

但现在它适用于所有课程。这意味着每当登录请求进入时,服务器都会抛出错误,因为它希望看到根元素名称。

1 个答案:

答案 0 :(得分:0)

endDateJsonTypeName一起使用,而不是JsonTypeInfo

JsonRootName

@JsonTypeName

  

用于绑定带注释的类具有的逻辑名称的注释。与JsonTypeInfo(特别是其JsonTypeInfo.use()属性)一起使用,以建立类型名称和类型之间的关系。

@JsonTypeInfo

  

用于配置if和如何使用类型信息以及JSON序列化和反序列化的详细信息的注释,以保留有关Object实例的实际类的信息。这必须是多态类型,也可能需要链接抽象声明的类型和匹配具体实现。