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: $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 パーサーを使用してフィードでそれを複製するにはどうすればよいですか?