2016-11-18 16 views
2

JSONレスポンスにはバックスラッシュがあり、一部のレスポンスにはバックスラッシュが含まれていません。javascriptを使用して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 + 0000 18.972 \ "\" の状態を\ "、\"エラー\ ":\"内部\ サーバー エラー\ "、\"例外\ ":\" java.lang.ArrayIndexOutOfBoundsException \ "、\"メッセージ\ ":\" 1 \ "、 "パス\":\ "/ログイン\"} "、" ステータス ":500、" OK ":偽、" STATUSTEXT ":" 内部 サーバーエラー "}

double quoteより前 」これらの2つが強調表示され、コードが機能します。

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を手動でデコードする必要があります。

関連する問題