douwen7516 2015-12-31 18:32
浏览 44
已采纳

使用PHP解码JSON

Forgive me for the simplicity of this question but I am brand new to working with API's and JSON. But I have a JSON file and I want to print out the "text" value of "duration". How can I do that?

{
   "destination_addresses" : [ "San Francisco, CA, USA" ],
   "origin_addresses" : [ "Seattle, WA, USA" ],
   "rows" : [
      {
         "elements" : [
            {
               "distance" : {
                  "text" : "808 mi",
                  "value" : 1299998
               },
               "duration" : {
                  "text" : "12 hours 27 mins",
                  "value" : 44846
               },
               "status" : "OK"
            }
         ]
      }
   ],
   "status" : "OK"
}

I am trying to do it using:

$url = 'https://maps.googleapis.com/maps/......'
$content = file_get_contents($url);
$json = json_decode($content, true);

echo $json['rows']['elements']['duration']['text'];

Many thanks!

  • 写回答

1条回答 默认 最新

  • duanbu1998 2015-12-31 18:35
    关注

    You should do it like this:

    echo $json['rows'][0]['elements'][0]['duration']['text'];
    

    Output:

    12 hours 27 mins

    Notice that in the json, you have what marks new arrays [, so you forgot to use [SOME_NUMBER].


    This is the structure (from print_r($json);):
    Array
    (
        [destination_addresses] => Array
            (
                [0] => San Francisco, CA, USA
            )
    
        [origin_addresses] => Array
            (
                [0] => Seattle, WA, USA
            )
    
        [rows] => Array
            (
                [0] => Array
                    (
                        [elements] => Array
                            (
                                [0] => Array
                                    (
                                        [distance] => Array
                                            (
                                                [text] => 808 mi
                                                [value] => 1299998
                                            )
    
                                        [duration] => Array
                                            (
                                                [text] => 12 hours 27 mins
                                                [value] => 44846
                                            )
    
                                        [status] => OK
                                    )
    
                            )
    
                    )
    
            )
    
        [status] => OK
    )
    

    You can also use it as object. It would be like this:

    $json = json_decode($content); // without true
    echo $json->rows[0]->elements[0]->duration->text;
    

    Output:

    12 hours 27 mins

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)
  • ¥20 matlab yalmip kkt 双层优化问题
  • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体