javascript - 使用 jQuery 根据 Google Geocoding API JSON 响应的类型获取值

标签 javascript jquery json google-maps foreach

我正在从 Google Geocoding API 获取 JSON 响应

其格式是这样的:

{
   "results" : [
      {
         "address_components" : [
            {
               "long_name" : "Department of Information science and engineering",
               "short_name" : "Department of Information science and engineering",
               "types" : [ "premise" ]
            },
            {
               "long_name" : "Gokul",
               "short_name" : "Gokul",
               "types" : [ "political", "sublocality", "sublocality_level_1" ]
            },
            {
               "long_name" : "Hubballi",
               "short_name" : "Hubballi",
               "types" : [ "locality", "political" ]
            },
            {
               "long_name" : "Dharwad",
               "short_name" : "Dharwad",
               "types" : [ "administrative_area_level_2", "political" ]
            },
            {
               "long_name" : "Karnataka",
               "short_name" : "KA",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "India",
               "short_name" : "IN",
               "types" : [ "country", "political" ]
            },
            {
               "long_name" : "580030",
               "short_name" : "580030",
               "types" : [ "postal_code" ]
            }

现在我可以使用 JavaScript 获取属性

"Postal Code:" + json.results[0].address_components[6].long_name

但根据我的研究,我发现 address_components[6] 可能并不总是相同的数据。所以我想根据类型获取值,以便我始终获得正确的数据。

现在我找到了一种使用 php 来做到这一点的方法:

foreach ($jsondata["results"] as $result) {
    foreach ($result["address_components"] as $address) {
        if (in_array("sublocality", $address["types"])) {
            $city = $address["long_name"];
        }
    }
}

但我无法弄清楚如何迭代每个结果并根据 JavaScript/JQuery 中的类型获取值。

谁能告诉我它是如何完成的?

最佳答案

您可以使用下面给出的代码(纯 JavaScript)来实现与使用 PHP 实现的功能相同的功能。运行代码片段以查看输出。

var results = [{
  "address_components": [{
    "long_name": "Department of Information science and engineering",
    "short_name": "Department of Information science and engineering",
    "types": ["premise"]
  }, {
    "long_name": "Gokul",
    "short_name": "Gokul",
    "types": ["political", "sublocality", "sublocality_level_1"]
  }, {
    "long_name": "Hubballi",
    "short_name": "Hubballi",
    "types": ["locality", "political"]
  }, {
    "long_name": "Dharwad",
    "short_name": "Dharwad",
    "types": ["administrative_area_level_2", "political"]
  }, {
    "long_name": "Karnataka",
    "short_name": "KA",
    "types": ["administrative_area_level_1", "political"]
  }, {
    "long_name": "India",
    "short_name": "IN",
    "types": ["country", "political"]
  }, {
    "long_name": "580030",
    "short_name": "580030",
    "types": ["postal_code"]
  }]
}];

for (result of results) {
  for (address of result.address_components) {
    if (address.types.indexOf("sublocality") != -1) {
      var city = address.long_name;
      alert(city);
    }
  }
}

关于javascript - 使用 jQuery 根据 Google Geocoding API JSON 响应的类型获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43844541/

相关文章:

javascript - jQuery 函数 .on ("click") 在触发类时不起作用

javascript - 当用户按下 Enter 键时,如何使用 JQuery 将事件添加到文本框?

json - 有没有一种简单的方法可以使用 Node.js 解释来自 Dojo 的 sortBy 和查询?

ruby-on-rails - elm 将 json 发布到 Rails

arrays - 具有自定义数据数组的函数

javascript - 我可以在异步函数中抛出错误吗?

javascript - 如何从 JavaScript 中的逗号分隔字符串中获取每个值?

javascript - 在 NodeJS 中发送 POST 请求时如何设置 Content-Length?

php - Ajax 无法在 Codeigniter 中运行

javascript - 无法使用 AJAX 识别 HTML 表单元素的值