2017-02-16 17 views
0

У меня простой Rest с JAX-RSКак опустить объект-оболочку в формате JSON при десериализации в Джексоне 2 эту заметку

@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" 
    } 
} 

Я lookig способ решить как менее навязчивым, как это возможно, чтобы избежать бел ow errro. Ищу аннотаций ориентированного решения

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: [email protected]; line: 2, column: 10] (through reference chain: com..endpoint.User["User"] 

ответ

0

Вы можете указать объект-оболочку с помощью @JsonTypeInfo. В основном что-то подобное будет делать. Обратите внимание, что имя класса должно быть таким же, как и объект-оболочка, и я думаю, что он также чувствителен к регистру. Попробуйте.

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

Он отлично работает !!! –

+1

Acctually с jaxrs аннотацией я даже chagne имени, чтобы избежать чувствительного к регистру @XmlRootElement (Name = "Usser") @XmlAccessorType (XmlAccessType.PUBLIC_MEMBER) @XmlType (имя = "Usser") @JsonTypeInfo (использование = Id .NAME, include = As.WRAPPER_OBJECT) –