ホームページ >バックエンド開発 >PHPチュートリアル >Baidu 座標 API から返される JSON 形式の文字列またはオブジェクトを取得する方法

Baidu 座標 API から返される JSON 形式の文字列またはオブジェクトを取得する方法

WBOY
WBOYオリジナル
2016-06-23 14:15:031210ブラウズ

JSON コールバック API Baidu

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
)

配列
(
[エラー] => 0
) [x] => MTE2LjQxMjYxOTYwMDc1
[y] => ; 値はbase64で暗号化されています

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

配列
(

] [ error] => 0

[x] => MTE2LjQxMjYxOTYwMDc1
[y] => MzkuOTE0MjIxMTQyNDM3
)

x,yの後の値はbase64で暗号化されています
座標がたくさんあるのでしたいです。 API に従って直接バッチ処理するインターフェイスは、関数形式に従って配列に格納するのではなく、返された暗号化された JSON データを取得します。
[x] => 116.41261960075
[y] => 39.914221142437
)
ありがとうございます。ただし、foreach を使用して x と y を http://api に動的に配置しているため、別の問題が発生します。 ....?from=2&to= 4&x={$x}&y={$y}&callback=callback';フォローしてエラーを返してください 致命的なエラー: [file_get_contents] で最大実行時間 30 秒を超えました。一度に 50 回、または 1 秒あたり 30 回の変換というリクエスト制限があるようです。 30 回または 50 回ループさせ、1 秒間一時停止し、スリープします

これは php のタイムアウトです
set_time_limit(0); を実行します。
php がタイムアウトしました
set_time_limit(0); を実行してください。最後に出力が成功した場合、データは半分しか取得されていません

かどうかによります。プログラムに問題があります

プログラムに問題があるかどうかによって異なります。申し訳ありませんが、インデックスが連続していないことがわかりました。最初は、xmlHttprequest、getjson などを使用する必要があると思いました。 json_decode( strtok(')'), 1) 1) のパラメーター 1 は何を意味しますか? () 内のデータを取得することであることはわかっています


json_decode の 2 番目のパラメーターは、オブジェクトがオブジェクトとしても返されるかどうかを示すことです。デフォルトは

ではありません

json_decode 2 番目のパラメータは、オブジェクトが配列としても返されるかどうかを示します はい、英雄たち、お互いに注意してください、私はあなたをマスターとして崇拝したいです

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。