将LinkedIn API响应主体解析为JSON

时间:2017-01-10 00:21:14

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

这让我疯了,我希望有人遇到这个&想出一个干净,优雅的解决方案。在向LinkedIn REST Api发出JSON请求时,正文将以带有换行符的字符串形式返回。当我使用JSON.parse将字符串解析为JSON时,出现以创建JSON对象,但我无法使用其相对键以点表示法访问这些值。我已经尝试转义新行字符,JSON.stringify然后解析等的组合。我不能让它工作,这是令人讨厌的,虽然我确信那里有一个简单的解决方案我&# 39;俯瞰。以下是LinkedIn API的回复:

  

{" statusCode":200," body":" {\ n \" numConnections \":152,\ n   \" numConnectionsCapped \&#34 ;:   假\ N}""头" {"服务器":" Apache的狼/ 1.1"&#34 X-俪请求-ID":"本身份识别码""变化":" *"" X丽格式":&# 34; JSON""内容类型":"应用/ JSON;字符集= UTF-8""日期":"星期二,   2017年1月10日00:08:01   GMT"" X丽织物":" PROD-ltx1""传输编码":"分块",& #34; X丽弹出":" PROD-ltx1""的Set-Cookie":[" LIDC = \" b = TB70:克= 489:U = 129:I = 1484006881:T = 1484082637:S = AQG3LuLPqWuZiIoHGf2NqD8O7mRfdA4q \&#34 ;;   Expires =星期二,2017年1月10日21:10:37 GMT;域= .linkedin.com;   路径= /&#34]," X丽UUID":" 53NCd2VAmBSAAWKrrSoAAA =="}"请求" {" URI& #34; {"协议":" HTTPS:""斜线":真," AUTH":空,&#34宿主":" api.linkedin.com""端口":443,"主机名":" api.linkedin.com&#34 ;,"散列":空,"搜索":"格式= JSON""查询":"格式= JSON& #34;"路径名":" / V1 /人/ ID =本身份识别码:(NUM-连接,NUM-连接封端)""路径" :" / V1 /人/ ID =本身份识别码:(NUM-连接,NUM-连接封端的)格式= JSON"" HREF":" {{3} }"}"方法":" GET""头" {"授权":"承载   即为MyToken"}}}

我试图通过键" numConnections"来访问该值。但只是无法达到价值。

使用JSON.parse(response.body)获取此结果:

  

{" numConnections" 152" numConnectionsCapped":假}

但是我仍然无法使用

访问与每个键相关联的值

myObj.numConnections或我试过的任何其他符号。如何从NodeJS中获取有效的JSON对象?

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

尝试

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

答案 2 :(得分:0)

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