2011-04-19 22 views
8

Estoy tratando de implementar un servicio RESTful en Java que recibe un objeto JSON a través de una solicitud PUT y se asigna automáticamente a un objeto Java. Logré hacer esto en XML, pero no puedo hacerlo usando JSON. Esto es lo que quiero hacer:Consumir objeto JSON en PUT Restful Service

@PUT 
@Consumes(MediaType.APPLICATION_XML) 
public String putTodo(JAXBElement<Route> r) { 
    Route route = r.getValue(); 
    route.toString(); 
    System.out.println("Received PUT XML Request"); 
    return "ok"; 
} 

Esto funciona, pero utilizando JSON sería algo similar, pero no puedo utilizar JAXB, ¿verdad?

@PUT 
@Consumes(MediaType.APPLICATION_JSON) 
public String putTodo(<WHAT DO I PUT HERE>) { 
    Route route = r.getValue(); 
    route.toString(); 
    System.out.println("Received PUT JSON Request"); 
    return "ok"; 
} 

Respuesta

6

Por defecto Jersey utilizará JAXB para procesar los mensajes JSON mediante el aprovechamiento de la biblioteca Jettison.

para que pueda hacer lo siguiente:

@PUT 
@Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) 
public String putTodo(JAXBElement<Route> r) { 
    Route route = r.getValue(); 
    route.toString(); 
    System.out.println("Received PUT XML/JSON Request"); 
    return "ok"; 
} 

Para más información sobre el uso de Vertido con JAXB:

+0

lo he intentado, pero didn no funciona Tal vez no estaba especificando el MediaType en la invocación del servicio;) gracias – ffleandro

Cuestiones relacionadas