簡體   English   中英

在Angular中解碼HTTP響應-JSON.parse問題

[英]Decode http response in Angular - JSON.parse issue

經過一番混亂之后,我到達了可以從后端收到404錯誤響應中的以下正文的地步。 我正在努力將內容解析為有角度的內容,以便可以使用它。 我知道這很簡單,很抱歉提出這樣一個基本問題。 _body看起來像這樣。

 _body: "{\"httpStatus\":404,\"errorType\":\"NotFound\",\"message\":\"Device does not exist!\"}"

這些很好:

console.log("Err = ", err);
Err =  Response {_body: " 
{\"httpStatus\":404,\"errorType\":\"NotFound\",\"message\":\"Device does not exist!\"}", status: 404, ok: false, statusText: "OK", headers: Headers, …}

和:

console.log("Err Body : ", err._body);
Err Body :  
{\"httpStatus\":404,\"errorType\":\"NotFound\",\"message\":\"Device does not exist!\"}

但這不起作用:

let errorObject = eval(errorString);
Uncaught (in promise): SyntaxError: Invalid or unexpected token

...

var errBody = JSON.parse(errorString);
console.log("JS err body", errBody);
Error: Uncaught (in promise): SyntaxError: Unexpected token \ in JSON at position 1

但是我不知道該如何處理各個字段。 我知道上述努力是幼稚和錯誤的。 我敢肯定,具有JS或棱角技巧的人都可以在一分鍾內解決此問題。

PS讓我有些懈怠。 我是硬件設計師。 我在這里是因為我一無所知,這始終是問問題的最佳理由。

編輯:

感謝您的回答。 JSON.parse對我不起作用!

SyntaxError: Unexpected token \ in JSON at position 1

我仔細研究了您的成功做法,並同意它可以在控制台中正常工作。 但這在Angular中對我不起作用。 起作用的是:

let errBody = JSON.parse("\"" + err._body + "\"");

盡管這樣做似乎很荒謬。 尤其是之后,結果並不完全正確:

err body {"httpStatus":404,"errorType":"NotFound","message":"Device does not exist!"}

如果我隨后嘗試獲取errBody.message,則它是未定義的!...這完全荒謬。 我究竟做錯了什么? 你們如何以此為生? 這太痛苦了!

我假設errorStringerr._body 無論哪種方式,將該字符串解析為JSON都應該很簡單:

let error = JSON.parse(err._body);

我最近又回來了。 最終設法弄清楚了。 在嘗試JSON Parse之前,我需要刪除體內的一些不需要的反斜杠。

const errorStringReplaced = err._body.replace(/\\/g, '');
const errBody = JSON.parse(errorStringReplaced);
this.outcomeMessage = errBody.message;

完成此操作后,我就可以正確抓住內臟了。 我仍然希望首先正確地發送對象,但是現在必須這樣做。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM