我有JSON响应,它有反斜杠,有些响应不包含反斜杠。
我需要根据响应显示错误消息,如何使用javascript解析JSON响应?
带有反斜杠的JSON响应,
{"_body":{"isTrusted":true},"status":0,"ok":false,"statusText":"","headers":{},"type":3,"url":null}
使用反斜杠回复,
{"_body":"{\"timestamp\":\"2016-11-18T04:46:18.972+0000\",\"status\":500,\"error\":\"Internal Server Error\",\"exception\":\"java.lang.ArrayIndexOutOfBoundsException\",\"message\":\"1\",\"path\":\"/login\"}","status":500,"ok":false,"statusText":"Internal Server Error"}
我尝试了以下方式,但它只适用于没有反斜杠的JSON响应。
var strj = JSON.stringify(err._body);
var errorobjs = strj.replace(/\\/g, "");
答案 0 :(得分:2)
实际上问题不在于/
斜杠。 JSON is INVALID
。"
。
从后端服务器中删除这些double quote
在“ {”时间戳和登录后的一个“}之前{ “_体”:<强> “强> {\” 时间戳\ “:\” 2016-11-18T04:46:18.972 + 0000 \ “\ ”状态\“:500,\” 错误\“:\“内部 服务器 错误\ “\ ”异常\“:\ ”java.lang.ArrayIndexOutOfBoundsException \“,\ ”消息\“:\ ”1 \“ \ ”路径\“:\ ”/登录\“}的”< / STRONG>, “状态”:500, “OK”:假 “状态文本”:“内部 服务器错误“}
var data = '{"_body":{\"timestamp\":\"2016-11-18T04:46:18.972+0000\",\"status\":500,\"error\":\"Internal Server Error\",\"exception\":\"java.lang.ArrayIndexOutOfBoundsException\",\"message\":\"1\",\"path\":\"/login\"},"status":500,"ok":false,"statusText":"Internal Server Error"}';
var json_data = JSON.parse(data);
console.log(json_data);
”
这两个突出显示,您的代码将工作。
body
实际上,你正在将"body" : "bodyOBJ" //Invalid
"body" : bodyObj //Valid
对象包装在后端的字符串中,这是无效的。
find
答案 1 :(得分:0)
VC2,VC3....
答案 2 :(得分:0)
解决方案:
g++ main.cpp -o example.out
说明:
您有一个顶级对象,其中包含一个键var response = {"_body":"{\"timestamp\":\"2016-11-18T04:46:18.972+0000\",\"status\":500,\"error\":\"Internal Server Error\",\"exception\":\"java.lang.ArrayIndexOutOfBoundsException\",\"message\":\"1\",\"path\":\"/login\"}","status":500,"ok":false,"statusText":"Internal Server Error"};
var body = JSON.parse(response._body);
console.log(body.error);
。该键的值是一个包含JSON本身的字符串。这通常是因为服务器端代码没有正确创建JSON。这就是你在字符串中看到_body
的原因。除非您能够修复服务器端代码,否则必须手动解码嵌套的JSON。