JSON кормит контекст в Drupal 7
Я пытаюсь подключиться к веб-сервису 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));
Вот что возвращает Devel:
... (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 />";
}
}
}
Вопрос все еще стоит, как мне воспроизвести это в Feeds, используя парсер JSON?
2 ответа
Посмотреть этот урок
Контекст: где вы помещаете выражение JSONPath, представляющее путь к массиву, представляющему ваши данные. Например, в моем файле это будет $.albums.data.*. Если бы это был массив PHP, это было бы в основном
foreach($facebook['album']['data'] как $value);
Возможно, вам придется попробовать этот модуль: Feeds JSONPath Parser