我正在尝试使用json和wunderground API请求一些数据。
当我使用此代码时,它返回错误“消息:尝试获取非对象的属性”。
<?php
$json_string = file_get_contents("http://api.wunderground.com/api/1e6a89f0a3aa092d/alerts/q/zmw:00000.1.16172.json");
$parsed_json = json_decode($json_string);
$wColor = $parsed_json->{'alerts'}->{'attribution'};
$wName = $parsed_json->{'alerts'}->{'wtype_meteoalarm'};
echo "Severe weather alert ${wColor} expected ${wName} - MORE INFO";
?>
数据在那里,可以在这里查看......
http://api.wunderground.com/api/1e6a89f0a3aa092d/alerts/q/zmw:00000.1.16172.json
然而,当我使用文档中几乎相同的示例代码片段
时<?php
$json_string = file_get_contents("http://api.wunderground.com/api/1e6a89f0a3aa092d/geolookup/conditions/q/IA/Cedar_Rapids.json");
$parsed_json = json_decode($json_string);
$location = $parsed_json->{'location'}->{'city'};
$temp_f = $parsed_json->{'current_observation'}->{'temp_f'};
echo "Current temperature in ${location} is: ${temp_f}\n";
?>
一切都很好!为什么我的第一个请求无法工作?
答案 0 :(得分:2)
$parsed_json->alerts
这里是一个包含对象的数字数组:
它的var_dump()
'输出:
object(stdClass)#1 (2) {
["response"]=> ...
["alerts"]=>
array(1) {
[0]=>
object(stdClass)#4 (15) {
["type"]=>
string(3) "WRN"
...
}
}
}
所以使用:
$wColor = $parsed_json->alerts[0]->attribution;
$wName = $parsed_json->alerts[0]->wtype_meteoalarm;
答案 1 :(得分:1)
问题在于您检索字段的方式。使用:
$wColor = $parsed_json->alerts[0]->attribution;
$wName = $parsed_json->alerts[0]->wtype_meteoalarm;
答案 2 :(得分:0)
试试这个
$alert = current($parsed_json->{'alerts'});
$wColor = $alert->{'attribution'};
$wName = $alert->{'wtype_meteoalarm'};