返回undefined的JavaScript对象

时间:2015-06-13 22:50:51

标签: javascript json npm

我正在向api端点发送http请求,该端点返回以下内容:

  

{     “身份”:200,     “headers”:“{\”server \“:\”nginx \“,\”date \“:\”Sat,13 Jun 2015 22:29:35 GMT \“,\”content-type \“:\”应用/ JSON; charset = utf-8 \“,\”content-length \“:\”223 \“,\”connection \“:\”keep-alive \“,\”status \“:\”200 OK \“,\ “cache-control”:“no-cache,no-store,must-revalidate \”,“pragma \”:\“no-cache \”,\“x-frame-options \”:\“SAMEORIGIN \ “\ ”变化\“:\ ”接受编码\“,\ ”X-UA-兼容\“:\ ”IE =边沿,铬= 1 \“ \ ”的Set-Cookie \“:[\” _twitch_session_id = 4654465464564645645646546;域= .twitch.tv;路径= /; expires = Sun,14-Jun-2015 10:29:35 GMT;仅Http \ “],\” X-请求-ID \ “:\” lostsOfStringsStuffHere \”,\ “X-运行时\”:\ “0.403684 \”,\ “接受范围,\”:\ “字节\”,\ “x-varnish \”:\“1124564703 \”,\“age \”:\“0 \”,\“via \”:\“1.1 varnish \”,\“x-mh-cache \”:\“导轨-清漆6db1a8;中号\ “\ ”前端-HTTPS \“:\ ”上\“}”,     “body”:“\”{\\“access_token \\”:\\“lostsOfStringsStuffHere \\”,\\“refresh_token \\”:\\“lostsOfStringsStuffHere \\”,\\“scope \\”:[\ \ “user_read \\”]} \ “”   }

然后我按照反序列化反应的主体运行:

var response = JSON.parse(response.body);

这给了我这个:

  

{     “ACCESS_TOKEN”: “lostsOfStringsStuffHere”     “refresh_token”: “lostsOfStringsStuffHere”     “范围”:[ “user_read”]   }

但是当我尝试访问对象的各个项目时,我得到undefined

示例:

console.log(response.access_token); // undefined

我刚接触使用JavaScript的json,并且过去使用PHP的json_decode()函数来处理后端项目的json。

我做了一些搜索,但没有遇到一个非常适合处理json的npm包。有人可以推荐一个吗?

1 个答案:

答案 0 :(得分:3)

您不需要额外的图书馆。内置JSON的JavaScript会很好。您的问题是返回的字符串是转义的,因此当您在JSON.parse上执行response.body时,结果实际上是字符串

您可以再次解析它:JSON.parse(JSON.parse(response.body)).access_token

但是我会调查为什么身体会以字符串形式返回。可能是您正在使用的API或http请求库的问题。我认为额外的字符串是不必要的。