Estoy a punto de configurar un servicio REST-Web con Jersey. Por el momento, estoy un poco confundido acerca de la representación correcta de cadenas u otros tipos de valores en JSON. Éstos son dos fragmentos:Devolución de la representación JSON de una cadena con Jersey
@GET
@Path("user")
@Produces(MediaType.APPLICATION_JSON)
public User user() {
return new User("reini", "admin");
}
llamar a este método en un navegador mostrará una "buena" cadena JSON así:
{"name":"reini","role":"admin"}
Mi segundo método es el siguiente:
@GET
@Path("hello/{name}")
@Produces(MediaType.APPLICATION_JSON)
public String hello(@PathParam("name") String name) {
return "Hello " + name + ", it is " + new Date();
}
Llamar a ese método en Browswer mostrará una cadena pura sin JSON-Stuff (llaves, etc.):
Hello firefox, it is Tue Sep 18 13:52:57 CEST 2012
Quiero consumir este servicio con el kit de herramientas dojo. El problema es que obtengo un para el segundo método tan pronto como establezco [handleAs: "json"] - flag. Me arroja un error "SyntaxError: Token inesperado H" donde "H" es la primera letra de la cadena devuelta.
Entonces: ¿Cuál es la representación json correcta de cadenas y otros tipos de valores y qué anotaciones tengo que establecer para que mi método produzca estos?
es mejor crear un DTO para cada operación o para crear un DTO para cada tipo que quiero usar? – Reini
DTO para cada tipo – SiMet
"JSON comienza con {" - Incorrecto. De acuerdo con http://json.org incluso un literal de cadena citado es JSON válido, y jersey debería ser compatible con la serialización correcta de una cadena como una cadena JSON. – ddumont