【问题标题】:JavaScript objects returning undefined返回未定义的 JavaScript 对象
【发布时间】:2015-06-13 22:50:51
【问题描述】:

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

{ “状态”:200, "headers": "{\"server\":\"nginx\",\"date\":\"2015 年 6 月 13 日星期六 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 \",\"vary\":\"Accept-Encoding\",\"x-ua-compatible\":\"IE=Edge,chrome=1\",\"set-cookie\":[\" _twitch_session_id=4654465464564645645646546;域=.twitch.tv;路径=/;过期=周日,2015 年 6 月 14 日 10:29:35 GMT; HttpOnly\"],\"x-request-id\":\"lostsOfStringsStuffHere\",\"x-runtime\":\"0.403684\",\"accept-ranges\":\"bytes\",\ "x-varnish\":\"1124564703\",\"age\":\"0\",\"via\":\"1.1 varnish\",\"x-mh-cache\":\" rails-varnish-6db1a8; M\",\"前端-https\":\"on\"}", "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 包。谁能推荐一个?

【问题讨论】:

  • 你真的想在那个 JSON 上使用 jsonlint.com
  • 能否展示发送请求的代码,也许我们可以找出为什么它会以字符串而不是 JSON 的形式返回。
  • @MarkEriksson 我正在使用Sails.js,它提供了一种简单的重定向方法:return res.redirect('url');

标签: javascript json npm


【解决方案1】:

您不需要额外的库。 JSON 内置的 JavaScript 就可以了。您的问题是返回的字符串被转义,所以当您在response.body 上执行JSON.parse 时,结果实际上是一个字符串

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

但是,我会研究为什么将正文作为字符串返回。可能是您正在使用的 API 或 http 请求库的问题。我认为多余的字符串是不必要的。

【讨论】:

    猜你喜欢
    • 2013-09-24
    • 2011-10-21
    • 1970-01-01
    • 2017-07-11
    • 1970-01-01
    • 2021-07-07
    • 1970-01-01
    • 2016-01-30
    • 1970-01-01
    相关资源
    最近更新 更多