经过一番混乱之后,我可以从后端接收到404错误响应中的以下内容。我正在努力将内容解析为有角度的内容,以便可以使用它。我知道这很简单,很抱歉提出这样一个基本问题。 _body看起来像这样。
<i class="caret pull-right" ng-click="$select.toggle($event)"></i>
这些很好:
_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
但是我不知道该如何处理各个字段。我知道上述努力是幼稚和错误的。我敢肯定,具有JS或棱角技巧的人都可以在一分钟内解决此问题。
PS让我有些懈怠。我是硬件设计师。我在这里是因为我一无所知,这始终是问问题的最佳理由。
感谢您的回答。 JSON.parse对我不起作用!?
var errBody = JSON.parse(errorString);
console.log("JS err body", errBody);
Error: Uncaught (in promise): SyntaxError: Unexpected token \ in JSON at position 1
我更加仔细地研究了您取得的成功,并且我同意它可以在控制台中正常工作。但这在Angular中对我不起作用。起作用的是:
SyntaxError: Unexpected token \ in JSON at position 1
尽管这样做似乎很荒谬。特别是因为事后,结果并不完全正确:
let errBody = JSON.parse("\"" + err._body + "\"");
如果然后我尝试获取errBody.message,则它是未定义的!...这完全荒谬。我究竟做错了什么?你们如何以此为生?它在杀了我!
答案 0 :(得分:1)
我假设errorString
是err._body
吗?无论哪种方式,将字符串解析为JSON都应该很简单:
let error = JSON.parse(err._body);
答案 1 :(得分:1)
我最近又回来了。最终设法弄清楚了。在尝试JSON Parse之前,我需要删除体内的一些不需要的反斜杠。
const errorStringReplaced = err._body.replace(/\\/g, '');
const errBody = JSON.parse(errorStringReplaced);
this.outcomeMessage = errBody.message;
这样做,我就可以正确抓住内脏了。我仍然希望首先正确地发送对象,但是现在必须这样做。