百度API返回JSON数据解析

百度API市场提供了大量免费同时又非常好用的第三方API。关于其API的调用等问题都有相应的示例非常的方便。
关于其返回的JSON数据的解析,笔者遇到了这样的一个问题。
例:天气预报API返回数据形式为:

JSON返回示例 :
{
errNum: 0,
errMsg: "success",
retData: {
   city: "北京", //城市
   pinyin: "beijing", //城市拼音
   citycode: "101010100",  //城市编码 
   date: "15-02-11", //日期
   time: "11:00", //发布时间
   postCode: "100000", //邮编
   longitude: 116.391, //经度
   latitude: 39.904, //维度
   altitude: "33", //海拔 
   weather: "晴",  //天气情况
   temp: "10", //气温
   l_tmp: "-4", //最低气温
   h_tmp: "10", //最高气温
   WD: "无持续风向",  //风向
   WS: "微风(<10m/h)", //风力
   sunrise: "07:12", //日出时间
   sunset: "17:44" //日落时间
  }    
}
备注 :
请将apikey作为参数添加到header中;
当返回{"errNum":300003,"errMsg":"url is not parse"} 时,请校验是否传入apikey;

为了取到其中的各条信息需要用到JSON数据的解析。
例:获取城市名称

$cityname = urlencode($_POST['cityname']);
            //设置天气API的url地址,初始化cURL 根据城市名称查询
            $url = 'http://apis.baidu.com/apistore/weatherservice/cityname?cityname='.$cityname; //天气API
            //$this->display();
            $ch = curl_init();
            $header = array(
                'apikey: e858d877f6febd23d6623e14a3dbf220',
            );
            //设置cURL的相关参数,执行HTTP请求
            curl_setopt($ch,CURLOPT_URL,$url);
            // 添加apikey到header
            curl_setopt($ch, CURLOPT_HTTPHEADER  , $header);
            curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
            //采集数据
            $output = curl_exec($ch);
            //关闭
            curl_close($ch);
            $res = json_decode($output,true);   //将生成的结果转化为json数据
            $this->assign('city',$res["retData"]['city']);
            $this->assign('date',$res["retData"]['date']);
            $this->assign('time',$res["retData"]['time']);
            $this->assign('temp',$res["retData"]['temp']);
            $this->assign('l_tmp',$res["retData"]['l_tmp']);
            $this->assign('h_tmp',$res["retData"]['h_tmp']);
            $this->assign('weather',$res["retData"]['weather']);
            $this->assign('WS',$res["retData"]['WS']);
            $this->display();

上面为一组关于利用天气预报API获取相关信息的PHP代码。其中利用到ThinkPHP模板技术。

笔者想说的是其中解析JSON数据部分,利用的是

$city = $res["resData"]["city"];

通过这种方式就可以获取其中的每条信息。这种方式基本可以处理所有API返回数据。

你可能感兴趣的:(json,api)