Das macht mich verrückt. Ich arbeite an einem REST-Endpunkt in JAX-RS (Glassfish/Jersey). Ich habe eine Methode, die einen String erhalten, speichern und zurückgeben soll. Der gesamte Endpunkt sollte JSON konsumieren und produzieren. Aber jedes Mal, wenn ich einen String zur Methode poste, wurde er mir in entflammter Form übergeben. Z.B. wenn ich poste:JAX-RS (Jersey): String von JSON Anfrage Körper noch entkommen
fetch("http://localhost:8080/myapp/rest/myresource", {
method: "post",
credentials: 'same-origin',
body: JSON.stringify("test\ntest"),
headers: {
"Content-Type": "application/json"
}
})
und die Ressource ist:
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public class MyResource {
@POST
public String set(@NotNull String value){
// store it
return storedValue;
}
}
dann, was gespeichert wird, und an den Client zurückgeben, ist:
"test\ntest"
Wenn ich aber wickeln die Zeichenfolge in einem Objekt:
fetch("http://localhost:8080/myapp/rest/myresource", {
method: "post",
credentials: 'same-origin',
body: JSON.stringify({value: "test\ntest"}),
headers: {
"Content-Type": "application/json"
}
})
mit Ressource
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public class MyResource {
@XmlRootElement
public static class Wrapper {
public String value;
}
@POST
public String set(@NotNull Wrapper wrapper) {
String value = wrapper.value;
// store it
return storedValue;
}
}
dann der Wert, der gespeichert wird und an den Client zurückgegeben wird
test
test
bin ich etwas fehlt?
Glassfish 4.1.1
- jersey 2.10.4-0
- json 1.0-0.1