【发布时间】:2016-03-29 08:53:33
【问题描述】:
这快把我逼疯了。我正在研究 JAX-RS(Glassfish / Jersey)中的 REST 端点。我有一个方法应该接收一个字符串,存储它并返回它。整个端点应该使用并生成 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
【问题讨论】: