1

Mapquest の Open API / Open Street Map サービスからの JSON 出力と対話する PHP コードを作成しようとしています。以下にリストアップしました。Drupal 6 の実装でこのコードを使用しています。このコードは出力を返しません。使用するとjson_last_error()0が出力されます。

function json_test_page() {
  $url = 'http://open.mapquestapi.com/directions/v1/route?outFormat=json&from=40.037661,-76.305977&to=39.962532,-76.728099';
  $json = file_get_contents($url);
  $obj = json_decode(var_export($json));
  $foo .= $obj->{'fuelUsed'}; 
  $output .= foo;
  return $output;
}

URL に従って生の JSON 出力を表示できます。この関数では1.257899、出力として取得することを期待しています。2 つの質問があります。

(1) 配列からアイテムを取得するために何を呼び出すことができますか? たとえば"distance":26.923、配列から JSON で表された値を取得するにはどうすればよいでしょうか?

(2) PHP マニュアルで読んだ再帰制限の問題に遭遇する可能性はありますか?

4

2 に答える 2

2

json_decode のマニュアル ページを注意深く読むと、オブジェクトではなく配列を返すために渡すことができるパラメーター (デフォルトでは false) があることに気付くでしょう。

$obj = json_decode($json, true);

そう:

<?php

function json_test_page() {
    $url = 'http://open.mapquestapi.com/directions/v1/route?outFormat=json&from=40.037661,-76.305977&to=39.962532,-76.728099';
    $json = file_get_contents($url);
    $obj = json_decode($json, true);
    //var_dump($obj);
    echo $obj['route']['fuelUsed'];
}

json_test_page();
于 2012-12-05T02:15:32.870 に答える
1

var_exportから関数を削除しますjson_decode

文字列に関する情報を json に変換しようとしています。

fuelUsedこの方法で物件を取得できました

function json_test_page() {
    $url = 'http://open.mapquestapi.com/directions/v1/route?outFormat=json&from=40.037661,-76.305977&to=39.962532,-76.728099';
    $json = file_get_contents($url);
    $obj = json_decode($json);
    return $obj->route->fuelUsed;
}
于 2012-12-05T02:02:53.747 に答える