在angular-json.parse问题中解码HTTP响应

时间 2019-02-22
阅读 75
点赞 0
收藏 0
连接monkey

在经历了相当多的混乱之后,我已经到了可以从后端接收404错误响应中的以下主体的地步。我正在努力将内容解析成角度,以便使用它。我知道这很简单,所以很抱歉问这样一个基本的问题。尸体看起来像这样。

 _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

我更仔细地看了看你所取得的成功,我同意它在控制台中工作得很好。但在角度上对我不起作用。工作内容是:

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

尽管这样做似乎很荒谬。尤其是后来,结果并不完全正确:

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

如果我尝试获取errbody.message,它是未定义的!…这完全是荒谬的。我做错什么了?你们是怎么生活的?我快死了!

建议答案

我最近又谈到这个问题。最后终于弄明白了。在尝试JSON解析之前,我需要删除一些不需要的反斜杠。

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

做完之后,我就可以正确地抓住内脏了。我还是宁愿一开始就把这个东西寄出去,但现在必须这样做。

👍 0