我正在向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包。有人可以推荐一个吗?
答案 0 :(得分:3)
您不需要额外的图书馆。内置JSON
的JavaScript会很好。您的问题是返回的字符串是转义的,因此当您在JSON.parse
上执行response.body
时,结果实际上是字符串。
您可以再次解析它:JSON.parse(JSON.parse(response.body)).access_token
但是我会调查为什么身体会以字符串形式返回。可能是您正在使用的API或http请求库的问题。我认为额外的字符串是不必要的。