首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用javascript删除json字符串中的反斜杠

使用javascript删除json字符串中的反斜杠
EN

Stack Overflow用户
提问于 2016-11-18 04:58:19
回答 3查看 7.4K关注 0票数 4

我有JSON响应,它有反斜杠,有些响应不包含反斜杠。

我需要根据响应显示错误消息,如何使用javascript解析JSON响应?

有反斜杠的JSON反应,

代码语言:javascript
复制
{"_body":{"isTrusted":true},"status":0,"ok":false,"statusText":"","headers":{},"type":3,"url":null} 

用反斜杠来回应,

代码语言:javascript
复制
{"_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响应。

代码语言:javascript
复制
var strj = JSON.stringify(err._body);
 var errorobjs = strj.replace(/\\/g, "");
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-11-18 05:13:45

实际上,问题不在于/斜杠。JSON is INVALID

从后端服务器中删除这些"

{"_body":"{\"timestamp\":\"2016-11-18T04:46:18.972+0000\",\“状态\”:500,\“错误\”:\“内部服务器错误\”,\"exception\":\"java.lang.ArrayIndexOutOfBoundsException\",\“消息\”:\“1\”,\"path\":\"/login\"}",“状态”:500,“确定”:false,“statusText”:“内部服务器错误”}

"{"timestamp之前的double quote和登录“}”之后的一个突出显示了这两个选项,您的代码就可以工作了。

代码语言:javascript
复制
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对象包装在后端的字符串中,这是无效的。

代码语言:javascript
复制
"body" : "bodyOBJ"  //Invalid
"body" : bodyObj    //Valid
票数 3
EN

Stack Overflow用户

发布于 2016-11-18 05:12:11

代码语言:javascript
复制
var obj = JSON.parse(response)

if(typeof obj._body == "string") {
    obj._body = JSON.parse(obj._body)
}

console.log(obj);
票数 1
EN

Stack Overflow用户

发布于 2016-11-18 05:32:34

解决方案:

代码语言:javascript
复制
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);

解释:

您有一个带有一个键的顶级对象,_body。该键的值是一个包含JSON本身的字符串。这通常是因为服务器端代码没有正确创建JSON。这就是为什么在字符串中看到\"的原因。除非您能够修复服务器端代码,否则必须手动解码嵌套的JSON。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40669673

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档