sto per impostare un REST-Webservice con Jersey. Al momento sono un po 'confuso riguardo la corretta rappresentazione di stringhe o altri tipi di valore in JSON. Qui ci sono due frammenti:Tornando alla rappresentazione JSON di una stringa con Jersey
@GET
@Path("user")
@Produces(MediaType.APPLICATION_JSON)
public User user() {
return new User("reini", "admin");
}
chiamata a questo metodo in un browser visualizzerà una "buona" String JSON così:
{"name":"reini","role":"admin"}
mio secondo metodo è simile al seguente:
@GET
@Path("hello/{name}")
@Produces(MediaType.APPLICATION_JSON)
public String hello(@PathParam("name") String name) {
return "Hello " + name + ", it is " + new Date();
}
Chiamando questo metodo in un Browswer verrà visualizzata una stringa pura senza materiale JSON (bretelle ricurve, ecc.):
Hello firefox, it is Tue Sep 18 13:52:57 CEST 2012
Desidero utilizzare questo servizio con il dojo toolkit. Il problema è che ottengo un secondo metodo non appena ho impostato [handleAs: "json"] - flag. Mi viene visualizzato un errore "SyntaxError: Unexpected token H" dove "H" è la prima lettera della stringa restituita.
Quindi: qual è la corretta rappresentazione JSON di stringhe e altri tipi di valori e quali annotazioni devo impostare per il mio metodo per produrle?
è meglio creare un DTO per ogni operazione o per creare un DTO per ogni tipo che voglio usare? – Reini
DTO per ciascun tipo – SiMet
"JSON inizia con {" - errato. Secondo http://json.org anche una stringa letterale quotata è JSON valida, e la jersey dovrebbe supportare serializzare correttamente una stringa come una stringa JSON. – ddumont