JSON feeds context within Drupal 7

梦想与她 提交于 2019-12-10 19:55:40

问题


I'm trying to connect to a REST web service with Drupal 7. Data is supplied via a url and I want to pull it into the D7 site to create and populate nodes. I'm using the feeds module to map the content and the JSONPath parser as the parser. I have also included Feeds HTTPFetcher Append Headers module so that I can add custom headers in to make sure it is JSON being returned and not badly formatted xml which I was getting before.

Custom headers:

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

I have a url that looks like http://192.136.0.31:8080/places/getAll

Further to the above I have the Devel module in place which is returning the feed array in the page using the code below in my template.php:

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

This is what Devel returns:

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

The problem I'm having is getting this into feeds and mapping to the relevant fields. I don't know what should go in the context field - I have tried $...*, $.*, $...[*] but no luck.

When I click on an Array element from the devel output it shows $...[0]['Address1'] which suggests that should be the context - no luck.

Quick Update - using the drupal_json_decode function I can split the array out how I need to using 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 />";
    }
}
}

The question still stands, how do I replicate that in Feeds using the JSON parser?


回答1:


You may need to try this module: Feeds JSONPath Parser




回答2:


See this tutorial

Context: is where you put the JSONPath expression that represents the path to the array representing your data. For instance, in my file, this would be $.albums.data.*. If this were a PHP array, that would be basically

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

  • See more at: http://glassdimly.com/blog/tech/drupal-7-feeds-extensible-parsers-jsonpath-map-json-fields/feeds-extensible-parsers#sthash.BrIutjfl.dpuf


来源:https://stackoverflow.com/questions/23628404/json-feeds-context-within-drupal-7

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!