【问题标题】:Get a JSON value from an array using Laravel使用 Laravel 从数组中获取 JSON 值
【发布时间】:2015-07-05 20:03:52
【问题描述】:

我正在尝试从他们的地理编码服务中从一个 JSON 数组 - $response 中获取纬度和经度值。

JSON 数组是这样返回的(随机地址):

{
   "results":[
      {
         "address_components":[
            {
               "long_name":"57",
               "short_name":"57",
               "types":[
                  "street_number"
               ]
            },
            {
               "long_name":"Polo Gardens",
               "short_name":"Polo Gardens",
               "types":[
                  "route"
               ]
            },
            {
               "long_name":"Bucksburn",
               "short_name":"Bucksburn",
               "types":[
                  "sublocality_level_1",
                  "sublocality",
                  "political"
               ]
            },
            {
               "long_name":"Aberdeen",
               "short_name":"Aberdeen",
               "types":[
                  "locality",
                  "political"
               ]
            },
            {
               "long_name":"Aberdeen",
               "short_name":"Aberdeen",
               "types":[
                  "postal_town"
               ]
            },
            {
               "long_name":"Aberdeen City",
               "short_name":"Aberdeen City",
               "types":[
                  "administrative_area_level_2",
                  "political"
               ]
            },
            {
               "long_name":"United Kingdom",
               "short_name":"GB",
               "types":[
                  "country",
                  "political"
               ]
            },
            {
               "long_name":"AB21 9JU",
               "short_name":"AB21 9JU",
               "types":[
                  "postal_code"
               ]
            }
         ],
         "formatted_address":"57 Polo Gardens, Aberdeen, Aberdeen City AB21 9JU, UK",
         "geometry":{
            "location":{
               "lat":57.1912463,
               "lng":-2.1790257
            },
            "location_type":"ROOFTOP",
            "viewport":{
               "northeast":{
                  "lat":57.19259528029149,
                  "lng":-2.177676719708498
               },
               "southwest":{
                  "lat":57.18989731970849,
                  "lng":-2.180374680291502
               }
            }
         },
         "partial_match":true,
         "place_id":"ChIJLTex1jQShEgR5UJ2DNc6N9s",
         "types":[
            "street_address"
         ]
      }
   ],
   "status":"OK"
}

我尝试了以下方法:

json_decode($response->results->geometry->location->lat)

但它返回“试图访问非对象的属性”。

任何帮助将不胜感激。

【问题讨论】:

  • json_decode($response)->results->geometry->location->lat ?
  • 返回相同的错误 - Trying to get property of non-object

标签: php arrays json laravel laravel-5


【解决方案1】:
var_dump(json_decode($response)->results[0]->geometry->location->lat);

【讨论】:

  • 完美运行! results[0],我怎么能让我不注意。谢谢!
  • 很高兴为您提供帮助。祝你好运!
【解决方案2】:

要么将 true 作为第二个参数传递给 json_decode 函数并使用数组表示法:

$obj = json_decode($json_string2, true);
foreach ($obj['geometry'] as $key => $value) {
    $lat = $value['location']['lat'];
    $long   = $value['location']['lng'];
}

【讨论】:

    【解决方案3】:

    试试这个: $jsonArray = json_decode($response,true);

    只是,首先你必须使用json_decode函数将整个json字符串转换为数组或对象,然后使用结构。

    【讨论】:

    • 即使我这样做 - $jsonArray = json_decode($response,true); dd($jsonArray->results); 它仍然返回 Trying to get property of non-object
    • 你看我的回答了吗?此代码$jsonArray = json_decode($response,true); 返回一个数组,而不是对象。所以使用dd($jsonArray['results']); 访问它的字段
    猜你喜欢
    • 2021-12-12
    • 2019-05-11
    • 2019-03-04
    • 1970-01-01
    • 2016-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-24
    相关资源
    最近更新 更多