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));

Вот что возвращает Девель:

... (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:&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?


person ShambalaG    schedule 13.05.2014    source источник


Ответы (2)


Вам может понадобиться попробовать этот модуль: Синтаксический анализатор каналов JSONPath

person Elaman    schedule 20.05.2014
comment
Я уже использую Feeds JSONPath Paser, но я не знаю, каким должно быть контекстное поле при сопоставлении контента с соответствующими полями. - person ShambalaG; 27.05.2014

См. это руководство.

Контекст: здесь вы помещаете выражение JSONPath, представляющее путь к массиву, представляющему ваши данные. Например, в моем файле это будет $.albums.data.*. Если бы это был массив PHP, это было бы в основном

foreach($facebook['альбомы']['данные'] as $value);

person Sonicthoughts    schedule 06.04.2015