【问题标题】:Parse LinkedIn API response body to JSON将 LinkedIn API 响应正文解析为 JSON
【发布时间】:2017-05-24 09:02:58
【问题描述】:

这让我发疯了,我希望有人遇到过这个问题并想出一个干净、优雅的解决方案。当向 LinkedIn REST Api 发出 JSON 请求时,正文作为带有换行符的字符串返回。当我使用 JSON.parse 将字符串解析为 JSON 时,它 似乎 会创建一个 JSON 对象,但我无法使用它们的相对键访问带有点符号的值。我尝试转义换行符、JSON.stringify 的组合然后解析等。我无法让它工作,而且很讨厌,尽管我确信有一个我忽略的简单解决方案。以下是来自 LinkedIn API 的响应:

{"statusCode":200,"body":"{\n \"numConnections\": 152,\n \"numConnectionsCapped\": false\n}","headers":{"server":"Apache-Coyote/1.1","x-li-request-id":"myid","vary":"*","x-li-格式":"json","content-type":"application/json;charset=UTF-8","date":"星期二, 2017 年 1 月 10 日 00:08:01 GMT","x-li-fabric":"prod-ltx1","传输编码":"chunked","x-li-pop":"prod-ltx1","set-cookie":["lidc =\"b=TB70:g=489:u=129:i=1484006881:t=1484082637:s=AQG3LuLPqWuZiIoHGf2NqD8O7mRfdA4q\"; 到期=格林威治标准时间 2017 年 1 月 10 日星期二 21:10:37;域=.linkedin.com; Path=/"],"x-li-uuid":"53NCd2VAmBSAAWKrrSoAAA=="},"request":{"uri":{"protocol":"https:","slashes":true,"auth": null,"host":"api.linkedin.com","port":443,"hostname":"api.linkedin.com","hash":null,"search":"?format=json"," query":"format=json","pathname":"/v1/people/id=myid:(num-connections,num-connections-capped)","path":"/v1/people/id=myid: (num-connections,num-connections-capped)?format=json","href":"https://api.linkedin.com/v1/people/id=myid:(num-connections,num-connections-capped)?format=json"},"method":"GET","headers":{"authorization":"Bearer 我的令牌"}}}

我正在尝试使用键“numConnections”访问该值,但无法访问该值。

使用JSON.parse(response.body) 得到这个结果:

{"numConnections":152,"numConnectionsCapped":false}

但是我仍然无法访问与每个键关联的值

myObj.numConnections 或我尝试过的任何其他表示法。如何在 NodeJS 中从中获取有效的 JSON 对象?

【问题讨论】:

    标签: javascript json node.js api linkedin-api


    【解决方案1】:

    解析response.body 的结果是一个对象 - 您可以在其上使用点表示法或括号表示法来访问值:

    var parsedBody = JSON.parse(response.body);
    parsedBody.numConnections //152
    parsedBody['numConnections'] //152
    

    【讨论】:

    • 更进一步,您应该能够很容易地使用 Chrome 控制台进行验证 - 我可以毫无问题地使用 let y = JSON.parse(response.body)
    【解决方案2】:

    试试

    JSON.parse(JSON.stringify(response.body))
    

    【讨论】:

      【解决方案3】:

      嗯,这很愚蠢。我发现我的问题实际上是 Express 不允许使用 res.send(num) 发送数值。出于某种原因,控制台中没有错误,我收到了一个带有 get 请求的未定义值。解析 JSON 不是问题,但将答案标记为有效。如果其他人遇到此问题,如果您想在 Express 中将它们作为响应发送,则在将它们与对象分离时需要对数值进行字符串化!

      【讨论】:

        猜你喜欢
        • 2018-03-27
        • 2016-01-09
        • 2019-06-25
        • 2016-09-03
        • 1970-01-01
        • 2016-06-20
        • 1970-01-01
        • 1970-01-01
        • 2019-02-09
        相关资源
        最近更新 更多