我正在使用Java开发一个安静的Web服务,我有这个返回有效JSON的方法:
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response getJSON()
{
String json = "{\"data\": \"This is my data\"}";
return Response.ok(json).build();
}
我遇到的问题是JSON是字符串形式。 我如何以对象形式发回?在我的响应返回时,我无法使用它,因为响应数据将以字符串形式返回
以防万一这是我在javascript端的网络服务电话
//Use of the promise to get the response
let promise = this.responseGet()
promise.then(
function(response) { //<--- the param response is a string and not an object :(
console.log("Success!", response);
}, function(error) {
console.error("Failed!", error);
}
);
//Response method
responseGet()
{
return new Promise(function(resolve, reject) {
let req = new XMLHttpRequest();
req.open('GET', 'http://localhost:8080/TestWebService/services/test');
req.onload = function() {
if (req.status == 200) {
resolve(req.response);
}
else {
reject(Error(req.statusText));
}
};
req.onerror = function() {
reject(Error("There was some error....."));
};
req.send();
});
}
答案 0 :(得分:1)
尝试在MediaType
第二个参数中传递ResponseBuilder
:
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response getJSON()
{
String json = "{\"data\": \"This is my data\"}";
return Response.ok(json, MediaType.APPLICATION_JSON).build();
}
答案 1 :(得分:0)
@GET
@Produces ("application/json")
如果你用它注释它应该工作。
答案 2 :(得分:0)
您所要做的就是在JavaScript中使用JSON.parse()。
promise.then(
function(response) {
response = JSON.parse(response);
console.log("Success!", response);
}
无论您从后端发送什么,您的responseGet函数都不会返回已解析的对象。