2016-03-29 11 views
0

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 

Antwort

0

Um raw String als JSON mit JAX-RS zu schreiben, Sie "@JsonRawValue" zur Verfügung gestellt von fasterxml.jackson

Class ResponseObject { 

@JsonRawValue 
String jsonString; 
... 
} 

Jedes Mal, wenn Sie das Antwortobjekt senden, wird unescaped json ohne Schrägstriche geschickt nutzen können.