使用json_decode在PHP中解析JSON对象

我试图从提供JSON格式数据的Web服务请求天气。我的PHP请求代码失败了:

$url="http://www.worldweatheronline.com/feed/weather.ashx?q=schruns,austria&format=json&num_of_days=5&key=8f2d1ea151085304102710";

$json = file_get_contents($url);

$data = json_decode($json, TRUE);

echo $data[0]->weather->weatherIconUrl[0]->value;

这是一些返回的数据。为了简洁起见,一些细节已被截断,但保留了对象完整性:

{ "data": 

{ "current_condition":

[ { "cloudcover": "31",

... } ],

"request":

[ { "query": "Schruns, Austria",

"type": "City" } ],

"weather":

[ { "date": "2010-10-27",

"precipMM": "0.0",

"tempMaxC": "3",

"tempMaxF": "38",

"tempMinC": "-13",

"tempMinF": "9",

"weatherCode": "113",

"weatherDesc": [ {"value": "Sunny" } ],

"weatherIconUrl": [ {"value": "http:\/\/www.worldweatheronline.com\/images\/wsymbols01_png_64\/wsymbol_0001_sunny.png" } ],

"winddir16Point": "N",

"winddirDegree": "356",

"winddirection": "N",

"windspeedKmph": "5",

"windspeedMiles": "3" },

{ "date": "2010-10-28",

... },

... ]

}

}

}

回答:

这似乎起作用:

$url = 'http://www.worldweatheronline.com/feed/weather.ashx?q=schruns,austria&format=json&num_of_days=5&key=8f2d1ea151085304102710%22';

$content = file_get_contents($url);

$json = json_decode($content, true);

foreach($json['data']['weather'] as $item) {

print $item['date'];

print ' - ';

print $item['weatherDesc'][0]['value'];

print ' - ';

print '<img src="' . $item['weatherIconUrl'][0]['value'] . '" border="0" alt="" />';

print '<br>';

}

如果将json_decode的第二个参数设置为true,则会得到一个数组,因此无法使用->语法。我还建议您安装JSONview

Firefox扩展),以便您可以以类似于 Firefox显示XML结构的漂亮格式的树状视图查看生成的json文档。这使事情变得容易得多。

以上是 使用json_decode在PHP中解析JSON对象 的全部内容, 来源链接: utcz.com/qa/416612.html

回到顶部