2016-11-18 1 views
2

JSON 응답에 백 슬래시가 있고 일부 응답에 백 슬래시가 없습니다.자바 스크립트를 사용하여 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

역 슬래시가 유효한 json이 아니지만 문자열 인 경우 – madalinivascu

+0

어떨까요? var strj = JSON.parse (err._body); – M14

+1

@madalinivascu 백 슬래시는 json에서 유효합니다. 문제는 백 슬래시가 아니지만 json 형식이 유효하지 않습니다. 그는 문자열에 obj를 감싸고있다. –

답변

2

사실 문제는 / slashs하지입니다. JSON is INVALID.

백엔드 서버

{ "_body"에서 이러한 " 제거 : " {\"타임 스탬프 \ 46 : : : 2016-11-18T04 "\"18.972 + 0000 \ ", \"상태를 \ ", \"오류 \ ": \"내부 \\ 서버 오류 \ ", \"예외 \ ": \"java.lang.ArrayIndexOutOfBoundsException \ ", \"메시지 \ ": \"1 \ ", \" "경로 \"\ "/ 로그인 \"} ","상태 ": 500,"확인 "거짓"하는 statusText ":"내부 서버 오류 "}

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을 디코딩해야합니다.

관련 문제