首页 > 解决方案 > 使用 json_decode 访问 HTTPS 请求使我的数据消失

问题描述

我从中获取 JSON 数据https://nominatim.openstreetmap.org/search?email=foo@bar.com&format=json&q=Berlin";,返回

[
  {
    "place_id": 574401,
    "licence": "Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright",
    "osm_type": "node",
    "osm_id": 240109189,
    "boundingbox": [
      "52.3570365",
      "52.6770365",
      "13.2288599",
      "13.5488599"
    ],
    "lat": "52.5170365",
    "lon": "13.3888599",
    "display_name": "Berlin, 10117, Deutschland",
    "class": "place",
    "type": "city",
    "importance": 0.8975390282491362,
    "icon": "https://nominatim.openstreetmap.org/ui/mapicons//poi_place_city.p.20.png"
  },
  {
    "place_id": 256375666,
    "licence": "Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright",
    "osm_type": "relation",
    "osm_id": 62422,
    "boundingbox": [
      "52.3382448",
      "52.6755087",
      "13.088345",
      "13.7611609"
    ],
    "lat": "52.5015217",
    "lon": "13.4025498",
    "display_name": "Berlin, Deutschland",
    "class": "boundary",
    "type": "administrative",
    "importance": 0.8975390282491362,
    "icon": "https://nominatim.openstreetmap.org/ui/mapicons//poi_boundary_administrative.p.20.png"
  }
]

现在我尝试访问第一个密钥latlon密钥。为此,我将使用$new_resp=json_decode($response, true)仅返回字符串“数组”来转换它。如何获得第一个 lon 和 lat 值?

标签: phpjson

解决方案


试试这个。

    $curlSession = curl_init();
    curl_setopt($curlSession, CURLOPT_URL, 'https://nominatim.openstreetmap.org/search?email=foo@bar.com&format=json&q=Berlin');

    curl_setopt($curlSession, CURLOPT_BINARYTRANSFER, true);
    curl_setopt($curlSession, CURLOPT_RETURNTRANSFER, true);
    
    $jsonData = json_decode(curl_exec($curlSession),true);

    print_r($jsonData[0]['lat']); //This prints your first lat
    print_r($jsonData[0]['lon']); //This prints your first lon
    //if you want lat & lon for every record then use foreach loop. 

    curl_close($curlSession);

推荐阅读