2016-11-18 262 views
2

我有JSON響應,它有反斜槓和一些響應不包含反斜槓。刪除json字符串中的反斜槓使用JavaScript

我需要顯示基於響應的錯誤消息,如何解析使用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

如果它反斜槓它不是一個有效的JSON,但一個字符串 – madalinivascu

+0

這是怎麼回事? var strj = JSON.parse(err._body); – M14

+1

@madalinivascu反斜槓在json中有效。問題不是反斜線,但json格式無效。他正在用線包裹obj。 –

回答

2

其實,問題不在於/ slashs。該JSON is INVALID

除去這些"從後端服務器

{ 「_body」: {\」 時間戳\ 「:\」 2016-11-18T04:46:18.972 + 0000 \ 「\」 狀態\「:」500,\「錯誤\」:\「內部 服務器 錯誤\」異常\「:\」java.lang.ArrayIndexOutOfBoundsException \「,\」message \「:\」1 \ 「路徑\」:\ 「/登錄\」} ,」 狀態 「:500,」 OK 「:假」 狀態文本 「:」 內部 服務器錯誤「}

double quote之前 {」時間戳和一個登錄後「} 這兩個突出顯示,您的代碼將工作。

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對象,它是無效的。

0
var obj = JSON.parse(response) 

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

console.log(obj); 
0

解決方案:

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。