首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Angular - JSON.parse问题中解码http响应

在Angular - JSON.parse问题中解码http响应
EN

Stack Overflow用户
提问于 2019-02-22 06:01:13
回答 2查看 905关注 0票数 0

在经历了相当长的一段时间后,我已经可以从后端收到以下404错误响应中的正文。我正在努力将内容解析成angular,这样我就可以使用它了。我知道这是很简单的事情,所以很抱歉问了这么基本的问题。_body如下所示。

代码语言:javascript
复制
 _body: "{\"httpStatus\":404,\"errorType\":\"NotFound\",\"message\":\"Device does not exist!\"}"

这些都很好:

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

和:

代码语言:javascript
复制
console.log("Err Body : ", err._body);
Err Body :  
{\"httpStatus\":404,\"errorType\":\"NotFound\",\"message\":\"Device does not exist!\"}

但这不起作用:

代码语言:javascript
复制
let errorObject = eval(errorString);
Uncaught (in promise): SyntaxError: Invalid or unexpected token

..。

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

但我想不出如何将各个字段提取出来。我意识到上述努力是天真的,也是错误的。我相信任何有JS或angular技能的人都可以马上解决这个问题。

PS放我一马吧。我是个硬件设计师。我在这里是因为我不知道一些事情,这永远是提出问题的最好理由。

编辑:

谢谢你的回答。JSON.parse对我不起作用!?

代码语言:javascript
复制
SyntaxError: Unexpected token \ in JSON at position 1

我更仔细地看了一下你在其中取得的成功,我同意它在控制台中工作得很好。但在Angular中它不适用于我。起作用的是:

代码语言:javascript
复制
let errBody = JSON.parse("\"" + err._body + "\"");

尽管这样做看起来很荒谬。特别是因为,后来,结果并不是很正确:

代码语言:javascript
复制
err body {"httpStatus":404,"errorType":"NotFound","message":"Device does not exist!"}

如果我随后尝试访问errBody.message,它是未定义的!这完全是荒谬的。我做错了什么?你们是怎么谋生的?它要了我的命!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-28 17:28:36

我最近又回到了这个问题上。并最终设法弄清楚了。在尝试JSON Parse之前,我需要删除正文中一些不需要的反斜杠。

代码语言:javascript
复制
const errorStringReplaced = err._body.replace(/\\/g, '');
const errBody = JSON.parse(errorStringReplaced);
this.outcomeMessage = errBody.message;

这样做之后,我就可以正确地抓取内脏了。我仍然倾向于首先正确地发送对象,但现在必须这样做。

票数 1
EN

Stack Overflow用户

发布于 2019-02-22 06:20:14

我猜errorString就是err._body吧?无论哪种方式,将该字符串解析为JSON都应该很简单,如下所示:

代码语言:javascript
复制
let error = JSON.parse(err._body);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54816894

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档