Home > Backend Development > PHP Tutorial > 怎么获取百度坐标api返回的json格式字符串或对象呢

怎么获取百度坐标api返回的json格式字符串或对象呢

WBOY
Release: 2016-06-23 14:15:03
Original
1210 people have browsed it

JSON callback API 百度

json不怎么熟,比如调用这个接口http://api.map.baidu.com/ag/coord/convert?from=2&to=4&x=116.40624058825688&y=39.90789300648029&callback=callback获得返回的数据是这样的callback&&callback({"error":0,"x":"MTE2LjQxMjYxOTYwMDc1","y":"MzkuOTE0MjIxMTQyNDM3"})
想得到x,y后面的加密数据,注意坐标比较多,需要批量
最好写个示例啊,

回复讨论(解决方案)

$url = 'http://api.map.baidu.com/ag/coord/convert?from=2&to=4&x=116.40624058825688&y=39.90789300648029&callback=callback';$s = file_get_contents($url);strtok($s, '(');$t = json_decode(strtok(')'), 1);$t['x'] = base64_decode($t['x']);$t['y'] = base64_decode($t['y']);print_r($t);
Copy after login
Copy after login
Array
(
[error] => 0
[x] => 116.41261960075
[y] => 39.914221142437
)

print_r( json_decode('{"error":0,"x":"MTE2LjQxMjYxOTYwMDc1","y":"MzkuOTE0MjIxMTQyNDM3"}',true));
Copy after login
Copy after login

Array
(
[error] => 0
[x] => MTE2LjQxMjYxOTYwMDc1
[y] => MzkuOTE0MjIxMTQyNDM3
)

x,y后面的值是base64 加密的

print_r( json_decode('{"error":0,"x":"MTE2LjQxMjYxOTYwMDc1","y":"MzkuOTE0MjIxMTQyNDM3"}',true));
Copy after login
Copy after login

Array
(
[error] => 0
[x] => MTE2LjQxMjYxOTYwMDc1
[y] => MzkuOTE0MjIxMTQyNDM3
)

x,y后面的值是base64 加密的
因为我这个坐标比较多,我想直接批量根据api接口得到返回的加密json数据,不是把已经得到的放进去根据函数格式成数组啊,不知道你明白没哟啊

$url = 'http://api.map.baidu.com/ag/coord/convert?from=2&to=4&x=116.40624058825688&y=39.90789300648029&callback=callback';$s = file_get_contents($url);strtok($s, '(');$t = json_decode(strtok(')'), 1);$t['x'] = base64_decode($t['x']);$t['y'] = base64_decode($t['y']);print_r($t);
Copy after login
Copy after login
Array
(
    [error] => 0
    [x] => 116.41261960075
    [y] => 39.914221142437
)
真的谢谢了,就是还有个问题,因为我是foreach动态把数组里的x跟y放进http://api....?from=2&to=4&x={$x}&y={$y}&callback=callback';跟我返回一个错误Fatal error: Maximum execution time of 30 seconds exceeded in 【file_get_contents】。好像它有请求限制,一次50个,还是一秒转换30个,怎么让它每循环30或50次,停顿1秒,sleep

你这是 php 超时了
执行一下 set_time_limit(0);

你这是 php 超时了
执行一下 set_time_limit(0); 奇怪了,为什么我程序走完了,最后如果走完的话输出成功,可是数据只拿到一半呢,大概4000左右坐标

那要看是否是你的程序问题了

那要看是否是你的程序问题了 不好意思,ok了,原来发现索引不是连续的,我一开始以为要用什么xmlHttprequest,getjson什么的,对了$t = json_decode(strtok(')'), 1)里面的参数1是什么意思啊,我知道是得到()里面的数据

json_decode 的第二个参数是指示是否对象也用数组返回,默认不是

json_decode 的第二个参数是指示是否对象也用数组返回,默认不是 恩,大侠哦,互相关注吧,我想拜你大师

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template