3

Drupal 7 を使用して REST Web サービスに接続しようとしています。データは URL を介して提供され、それを D7 サイトにプルしてノードを作成および設定したいと考えています。フィード モジュールを使用してコンテンツをマップし、JSONPath パーサーをパーサーとして使用しています。Feeds HTTPFetcher Append Headers モジュールも含めたので、カスタム ヘッダーを追加して、JSON が返され、以前に取得した不適切な形式の xml ではないことを確認できます。

カスタム ヘッダー:

Accept|application/json
Content-Type|application/json

次のようなURLがありますhttp://192.136.0.31:8080/places/getAll

上記に加えて、template.php で以下のコードを使用して、ページにフィード配列を返す Devel モジュールを配置しました。

$request = drupal_http_request('http://192.136.0.31:8080/places/getAll', $options);
dpm(drupal_json_decode($request->data));

これは Devel が返すものです:

... (Array, 1192 elements)
   0 (Array, 17 elements)
      Address1 (String, 19 characters ) 1-2 The Road name
      Address2 (String, 9 characters ) Shuinnad

私が抱えている問題は、これをフィードに入れ、関連するフィールドにマッピングすることです。コンテキスト フィールドに何を入力すればよいかわかりません - $...*, $.*, $...[*] を試しましたが、うまくいきません。

devel 出力から Array 要素をクリックすると、 $...[0]['Address1'] が表示されます。これは、それがコンテキストであることを示唆しています。

クイック アップデート - drupal_json_decode 関数を使用して、php を使用する必要がある方法で配列を分割できます

foreach ($json as $section => $items) {
foreach ($items as $key => $value) {
    //if ($key == 'Address1') {
    echo "$section:\t$key\t:&nbsp;$value<br>";
    //}
    // check whether the current item is an array!
    if(is_array($value)) {
        echo "$key is sub array:<br />";
        foreach($value as $subKey => $subValue)
            echo "$subKey:\t$subValue<br />";
    }
}
}

JSON パーサーを使用してフィードでそれを複製するにはどうすればよいですか?

4

2 に答える 2

0

このチュートリアルを参照してください

Context: データを表す配列へのパスを表す JSONPath 式を配置する場所です。たとえば、私のファイルでは、これは $.albums.data.* になります。これがPHP配列である場合、それは基本的に

foreach($facebook['albums']['data'] as $value);

于 2015-04-06T04:47:22.257 に答える