2016-03-29 5 views
0

これは私を狂っています。 JAX-RS(Glassfish/Jersey)のRESTエンドポイントで作業しています。 Stringを受け取って格納し返すメソッドがあります。エンドポイント全体でJSONを消費し、生成する必要があります。しかし、メソッドにStringをポストするたびに、それはエスケープされた形で私に渡されます。例えば。JAX-RS(Jersey):JSONリクエスト本体からの文字列がまだエスケープされました

fetch("http://localhost:8080/myapp/rest/myresource", { 
    method: "post", 
    credentials: 'same-origin', 
    body: JSON.stringify("test\ntest"), 
    headers: { 
    "Content-Type": "application/json" 
    } 
}) 

とリソースがある:私は投稿した場合、その後

@Produces(MediaType.APPLICATION_JSON) 
@Consumes(MediaType.APPLICATION_JSON) 
public class MyResource { 

    @POST 
    public String set(@NotNull String value){ 
     // store it 
     return storedValue; 
    } 
} 

保存されているもの、およびクライアントに返す、次のとおりです。

"test\ntest" 

場合は、しかし、私はラップオブジェクト内の文字列:

fetch("http://localhost:8080/myapp/rest/myresource", { 
    method: "post", 
    credentials: 'same-origin', 
    body: JSON.stringify({value: "test\ntest"}), 
    headers: { 
    "Content-Type": "application/json" 
    } 
}) 

リソース

@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; 
    } 
} 

その後、保存され、クライアントに返された値は、私が何かを

test 
test 

をしないのですか?

Glassfish 4.1.1 
- jersey 2.10.4-0 
- json 1.0-0.1 

答えて

0

は、あなたがfasterxml.jacksonレスポンス・オブジェクトを送信するたびに

Class ResponseObject { 

@JsonRawValue 
String jsonString; 
... 
} 

が提供する「@JsonRawValue」を使用することができ、エスケープJSONはスラッシュなしで送信されます。

関連する問題