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"})
$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);
配列
(
[エラー] => 0
) [x] => MTE2LjQxMjYxOTYwMDc1
[y] => ; 値はbase64で暗号化されています
print_r( json_decode('{"error":0,"x":"MTE2LjQxMjYxOTYwMDc1","y":"MzkuOTE0MjIxMTQyNDM3"}',true));
[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); を実行してください。最後に出力が成功した場合、データは半分しか取得されていません
かどうかによります。プログラムに問題があります
json_decode の 2 番目のパラメーターは、オブジェクトがオブジェクトとしても返されるかどうかを示すことです。デフォルトは
json_decode 2 番目のパラメータは、オブジェクトが配列としても返されるかどうかを示します はい、英雄たち、お互いに注意してください、私はあなたをマスターとして崇拝したいです