繁体   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