Maison >développement back-end >tutoriel php >怎么获取百度坐标api返回的json格式字符串或对象呢

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

WBOY
WBOYoriginal
2016-06-23 14:15:031210parcourir

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);
Array
(
    [error] => 0
    [x] => 116.41261960075
    [y] => 39.914221142437
)

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

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

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

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

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);
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 的第二个参数是指示是否对象也用数组返回,默认不是 恩,大侠哦,互相关注吧,我想拜你大师

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn