我在php中解析了以下json对象。
我似乎无法遍历json以一次性获取所有这些属性,看起来像下面的示例。
list->dt_txt
例如。 20170308
list->weather->main
例如。雨
city->name
例如。 Mobay公司
输出应如下所示:
20170308
Rain
Mobay
20170307
Clear
Kingston
20170309
Clear
Kingston
......
JSON:
{
"cod":"200",
"message":0.2902,
"cnt":35,
"list": [
{
"dt":1488985200,
"main":{
"temp":300.1,
"temp_min":299.712,
"temp_max":300.1,
"pressure":1026.69,
"sea_level":1033.03,
"grnd_level":1026.69,
"humidity":100,
"temp_kf":0.39
},
"weather": [
{
"id":800,
"main":"Clear",
"description":"clear sky",
"icon":"01d"
}
],
"clouds":{
"all":0
},
"wind":{
"speed":9.02,
"deg":68.0006
},
"sys":{
"pod":"d"
},
"dt_txt":"2017-03-08 15:00:00"
},
{
"dt":1488996000,
"main":{
"temp":300.55,
"temp_min":300.252,
"temp_max":300.55,
"pressure":1025.2,
"sea_level":1031.44,
"grnd_level":1025.2,
"humidity":98,
"temp_kf":0.29
},
"weather": [
{
"id":800,
"main":"Clear",
"description":"clear sky",
"icon":"01d"
}
],
"clouds":{
"all":0
},
"wind":{
"speed":9.07,
"deg":67.5009
},
"sys":{
"pod":"d"
},
"dt_txt":"2017-03-08 18:00:00"
}],
"city":{
"id":3489460,
"name":"Montego Bay",
"coord":{
"lat":18.4712,
"lon":-77.9189
},
"country":"JM"
}
}
PHP代码:
$kingstonJson = file_get_contents('http://api.openweathermap.org/data/2.5/forecast?q=Montego%20Bay,Jam&mode=json&appid=894ae60546cfa979ee945b2a7809f23d');
$mobayJson = file_get_contents('http://api.openweathermap.org/data/2.5/forecast?q=Kingston,Jam&mode=json&appid=894ae60546cfa979ee945b2a7809f23d');
$kingstonWeather = json_decode($kingstonJson);
$mobayWeather = json_decode($mobayJson);
foreach($kingstonWeather->list as $list){
//echo $list->weather->main;
foreach ($list as $b){
//echo $b;// getting an error here
}
foreach ($list->weather as $b){
echo $b->main;
}
我该怎么做?
答案 0 :(得分:0)
如果您使用json_decode($ json,true),您会看到:
In [6]: x.assign(**{lst_col:np.concatenate(data[lst_col].values)})[data.columns.tolist()]
Out[6]:
Product Category Product Cost Products
0 Music 55 Rock On Leather Journal
1 Journals 55 Rock On Leather Journal
2 Paper 55 Rock On Leather Journal
3 Headphones 163 Beats Earbuds In Ear Timer
4 Music 163 Beats Earbuds In Ear Timer
5 Clocks 163 Beats Earbuds In Ear Timer
6 Watches 200 Garmin 25mm Wristwatch
7 Clocks 200 Garmin 25mm Wristwatch
等
换句话说:list是一个数组数组try:
array (
'cod' => '200',
'message' => 0.29020000000000001,
'cnt' => 35,
'list' => array (
0 => array (
'dt' => 1488985200,
'main' => array (
'temp' => 300.10000000000002,
'temp_min' => 299.71199999999999,
'temp_max' => 300.10000000000002,
答案 1 :(得分:0)
$list
是一个对象,而不是一个数组,因此foreach ($list as $b)
毫无意义。它只有一个dt_txt
属性,所以打印一次,而不是嵌套循环。
foreach $(kingstonWeather->list as $list) {
echo $list->dt_txt . "<br>";
foreach ($list->weather as $weather) {
echo $weather->main . "<br>";
}
}
答案 2 :(得分:0)
我已经转储了您已解码的JSON,这是生成的PHP对象:
stdClass Object
(
[cod] => 200
[message] => 0.2902
[cnt] => 35
[list] => Array
(
[0] => stdClass Object
(
[dt] => 1488985200
[main] => stdClass Object
(
[temp] => 300.1
[temp_min] => 299.712
[temp_max] => 300.1
[pressure] => 1026.69
[sea_level] => 1033.03
[grnd_level] => 1026.69
[humidity] => 100
[temp_kf] => 0.39
)
[weather] => Array
(
[0] => stdClass Object
(
[id] => 800
[main] => Clear
[description] => clear sky
[icon] => 01d
)
)
[clouds] => stdClass Object
(
[all] => 0
)
[wind] => stdClass Object
(
[speed] => 9.02
[deg] => 68.0006
)
[sys] => stdClass Object
(
[pod] => d
)
[dt_txt] => 2017-03-08 15:00:00
)
[1] => stdClass Object
(
[dt] => 1488996000
[main] => stdClass Object
(
[temp] => 300.55
[temp_min] => 300.252
[temp_max] => 300.55
[pressure] => 1025.2
[sea_level] => 1031.44
[grnd_level] => 1025.2
[humidity] => 98
[temp_kf] => 0.29
)
[weather] => Array
(
[0] => stdClass Object
(
[id] => 800
[main] => Clear
[description] => clear sky
[icon] => 01d
)
)
[clouds] => stdClass Object
(
[all] => 0
)
[wind] => stdClass Object
(
[speed] => 9.07
[deg] => 67.5009
)
[sys] => stdClass Object
(
[pod] => d
)
[dt_txt] => 2017-03-08 18:00:00
)
)
[city] => stdClass Object
(
[id] => 3489460
[name] => Montego Bay
[coord] => stdClass Object
(
[lat] => 18.4712
[lon] => -77.9189
)
[country] => JM
)
)
因此,您可以在此处找到所需的属性:
foreach($kingstonWeather->list as $list) {
$dt_txt = $list->dt_txt; // dt_txt attribute
foreach($list->weather as $weather) {
$main_weather = $weather->main; // main weather attribute
}
}
$city = $kingstonWeather->city->name; // city name attribute
$mobayJson
对象也是如此。