如何在 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)
我用 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)