2017-02-16 1 views
0

J'ai eu simple repos avec JAX-RSComment omettre objet d'emballage en JSON lorsque désérialisation à Jackson 2 anotation

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

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

Et nous voulons lier à l'utilisateur POJO

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

Utilisation JSON avec l'utilisateur d'objet

{ 
    "User":{ 
    "name":"geroge",  
    "surname":"jordi" 
    } 
} 

Je lookig un moyen de résoudre en moins intrusif possible pour éviter le bel ow errro. Je cherche une solution axée sur l'annotation

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"] 

Répondre

0

Vous pouvez spécifier l'objet d'emballage en utilisant la @JsonTypeInfo. Fondamentalement quelque chose comme ça va faire. Notez que le nom de classe doit être identique à l'objet wrapper et je pense qu'il est sensible à la casse. Essaye le.

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

Fonctionne parfaitement !!! –

+1

acctually avec annotation jaxrs je peux même CHAGNE le nom pour éviter @XmlRootElement sensible à la casse (name = "Usser") @XmlAccessorType (XmlAccessType.PUBLIC_MEMBER) @XmlType (name = "Usser") @JsonTypeInfo (utilisation = Id .NAME, include = As.WRAPPER_OBJECT) –