3

これが私のPHPスクリプトです。

do2:locu alexus$ cat venuesearch.php 
<?php

$KEY='XXXXXXXXXXXXXXX';
$URL='http://api.locu.com/v1_0/venue/search/?api_key=';

$ch=curl_init();
curl_setopt($ch, CURLOPT_URL, $URL.$KEY);
curl_setopt($ch, CURLOPT_HEADER,0);

print_r(json_decode(curl_exec($ch),TRUE));

?>
do2:locu alexus$ 

locuサービスは、JSON 形式で出力を提供します。スクリプトを実行すると、出力がすべて長い 1 行で表示されます。

出力のサンプル:

do2:locu alexus$ php venuesearch.php 
{"meta": {"cache-expiry": 3600, "limit": 25}, "objects": [{"categories": ["restaurant"], "country": "United States",.......... 

私は何が欠けていますか?これらの各変数にアクセスするにはどうすればよいですか? それをXMLに変換するのは理にかなっているでしょうか?

* UPDATE * : .. PHP の例 #1 : json_decode - 手動で書式設定された出力が表示されますtrue

4

2 に答える 2

3

追加してみてください:

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

実行前。

実行は、json_decodeによって処理される文字列として応答を返すのではなく、単に応答を出力しているように見えます。

于 2013-02-24T23:22:34.733 に答える
2

元のデータを確認する必要があります。

$json = curl_exec($ch);
var_dump($json);

説明した出力は、APIが次のようなjsonエンコードされたjson文字列を返す場合にのみ可能です。

"{\"meta\": {\"cache-expiry\": 3600, \"limit\": 25}, \"objects\": [{\"categories\": [\"restaurant\"], \"country\": \"United States\",.......... '

(外側の引用符に注意してください。これらは文字列の一部です)

これは非常に奇妙で間違いなくAPIのバグですが、それを回避する唯一の方法は2回デコードすることです。

$data = json_decode(json_decode($json));

編集:それを忘れて、Stegrexはそれを理解しました

于 2013-02-24T23:23:20.923 に答える