如何在 Jackson 2 注释中反序列化时省略 JSON 中的包装器对象

How to omit wrapper object in JSON when deserialization in Jackson 2 anotation

我用 jax-rs 得到了一个简单的 Rest

@POST
@Path("/user")
@Produces({ "application/json" })
@Consumes({ "application/json" })
public Response createuser(User user){

    user.name = "pepebotero";
    return  Response.ok(user).build();

我们要绑定到 POJO 用户

public class User {
    public String name;
    public String surname;
}

将 JSON 与对象用户

一起使用
{
    "User":{
    "name":"geroge",    
    "surname":"jordi"
    }   
}

我正在寻找一种尽可能减少干扰的方法来避免以下错误。我正在寻找面向注释的解决方案

Caused by: com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "User" (class com.endpoint.User), not marked as ignorable (2 known properties: "name", "surname"])
 at [Source: org.apache.cxf.transport.http.AbstractHTTPDestination@576599b5; line: 2, column: 10] (through reference chain: com..endpoint.User["User"]

您可以使用 @JsonTypeInfo 指定包装器对象。基本上这样的事情就可以了。请注意 class 名称必须与包装器对象相同,我认为它也是 case-sensitive。试试吧。

@JsonTypeInfo(use=Id.NAME, include=As.WRAPPER_OBJECT)