在php中解析复杂的json


Parsing complex json in php

我试图使用json_decode和file_get_contents获得股票报价的价格。我试图获得价格与关联数组,但我得到未定义的索引错误,坦率地说,我卡住了。我的代码:

  $jsondata =file_get_contents("http://finance.yahoo.com/webservice/v1/symbols/wmt/quote?format=json");
  $json = json_decode($jsondata, true);
  $list = $json['list'];
  $resource = $list['resources'];
  $resource = $resource['resource'];
  $fields = $resource['fields'];
  $price = $fields['price'];
  echo $price;
JSON:

{
    list : {
        meta : {
            type : "resource-list",
            start : 0,
            count : 1
        },
        resources : [{
                resource : {
                    classname : "Quote",
                    fields : {
                        name : "Wal-Mart Stores, Inc. Common St",
                        price : "68.570000",
                        symbol : "WMT",
                        ts : "1440014635",
                        type : "equity",
                        utctime : "2015-08-19T20:03:55+0000",
                        volume : "16333364"
                    }
                }
            }
        ]
    }
}

试试这个,它应该是工作的,

$json = json_decode($jsondata, true);
$resoureces=$json['list']['resources'];
foreach ($resoureces as $value) {
$price=$value['resource']['fields']['price'];
}
print_r($price);

下面一行都出错了:

$resource = $resource['resource'];

此时,$resource已经是一个非关联数组,您只需循环:

$resources = $list['resources'];
foreach($resources as $resource) {
    $name = $resource['classname'];
    $fields = $resource['fields'];
    $price = $fields['price'];
}