Я пытаюсь подключиться к веб-службе REST с помощью Drupal 7. Данные передаются через 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
В дополнение к вышесказанному у меня есть модуль Devel, который возвращает массив каналов на странице, используя код ниже в моем template.php:
$request = drupal_http_request('http://192.136.0.31:8080/places/getAll', $options);
dpm(drupal_json_decode($request->data));
Вот что возвращает Девель:
... (Array, 1192 elements)
0 (Array, 17 elements)
Address1 (String, 19 characters ) 1-2 The Road name
Address2 (String, 9 characters ) Shuinnad
Проблема, с которой я сталкиваюсь, заключается в том, чтобы получить это в фидах и сопоставить с соответствующими полями. Я не знаю, что должно быть в поле контекста - я пробовал $...*
, $.*
, $...[*], но не повезло.
Когда я нажимаю на элемент Array из вывода devel, он показывает $...[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?