解析Google Place API的网址返回的JSON中的值

时间:2019-01-01 18:24:25

标签: node.js dialogflow google-api-nodejs-client dialogflow-fulfillment

我正在使用dialogflow-fulfillment创建一个机器人,并且正在使用Google Place API提取有关医院的其他信息。

为了示例,我做出了一个虚拟响应,该响应由Google Place API返回,这里是链接:http://www.mocky.io/v2/5c2b9f9e3000007000abafe3

{
   "candidates" : [
      {
         "formatted_address" : "140 George St, The Rocks NSW 2000, Australia",
         "name" : "Museum of Contemporary Art Australia",
         "photos" : [
            {
               "height" : 3492,
           "html_attributions" : [
              "\u003ca href=\"https://maps.google.com/maps/contrib/105784220914426417603/photos\"\u003eKeith Chung\u003c/a\u003e"
           ],
           "photo_reference" : "CmRaAAAAaGaCX-kivNEaJ-z97AduTYgW3d98uv53-8skNrS1k1GTgOtiQ1-Z2gfWJydrpkrshuV_kHPKizl088dezEJgIxYGoTWqtJgah-u_I46qNNYMfUbk8LKBZqxzkHyIL1nWEhBO6lPa0NgvlyLGBrXpXFPUGhT0lAUj_oCiOWV2MEYdBeKf-kTtgg",
           "width" : 4656
            }
         ]
      }
   ],
   "status" : "OK"
}

我需要从Google Place API返回的JSON解析我选择的值。例如,如果我必须使用Python从上面的JSON解析'name'的值,我会这样做:

import requests, json
api_key = ''
r = requests.get('https://maps.googleapis.com/maps/api/place/findplacefromtext/json?input=Museum%20of%20Contemporary%20Art%20Australia&inputtype=textquery&fields=photos,formatted_address,name&key=' + api_key)
x = r.json()
y = x['candidates']
print(y[0]['name'])

上面的工作代码很清楚,而且效果很好。考虑到我对Nodejs的经验不足,请让我知道Nodejs中类似的内容来解析值,例如'name'的值吗?

您的宝贵答复将鼓励我。

P.S:谦虚,这个问题涉及首先调用Google Place API,然后解析返回的JSON中的值。请按照上面Python代码中给出的步骤进行操作,以更好地理解。

1 个答案:

答案 0 :(得分:0)

在异步HTTP请求中获取API响应(有大量的request之类的npm库可以帮助您自动设置标头等),然后使用标准库JSON.parse(body)获得一个普通的JavaScript对象,该对象包含API响应的结构化表示。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse