所以我有一份包含当地天气详情的清单http://api.openweathermap.org/data/2.5/weather?q=Schimmert,nl。我希望在我的网站上通过php显示其中的一些信息,但是不能真正了解JSON对我来说是一个全新的东西。
我现在唯一能做的就是:http://jeroenonline.biz/JSON/index.php。所以这是一个简单的脚本:
$getData = file_get_contents( "http://api.openweathermap.org/data/2.5/weather?q=Schimmert,nl");
$decode = json_decode($getData);
echo "<pre>";
print_r($decode);
&#13;
答案 0 :(得分:6)
使用链接
http://api.openweathermap.org/data/2.5/weather?q=Schimmert,nl
没有&#34;。&#34;给我一个回复
{
"message": "Error: Not found city",
"cod": "404"
}
<?php
$getData = file_get_contents( "http://api.openweathermap.org/data/2.5/weather?q=Schimmert,nl");
$decode = json_decode($getData);
// accessing it through object
echo $decode->message;
echo "<br/>";
echo $decode->cod;
// accessit via array
// set true the second parameter or the json_decode($encoded_data, TRUE)
// to give you array
$decode = json_decode($getData, TRUE);
echo "<br/>";
echo $decode['message'];
echo "<br/>";
echo $decode['cod'];
所以当使用&#34;。&#34;
的链接时http://api.openweathermap.org/data/2.5/weather?q=Schimmert,nl
给出了回复:
{
"coord": {
"lon": 5.83,
"lat": 50.91
},
"sys": {
"message": 0.0287,
"country": "Netherlands",
"sunrise": 1430884846,
"sunset": 1430939149
},
"weather": [
{
"id": 800,
"main": "Clear",
"description": "Sky is Clear",
"icon": "01n"
}
],
"base": "stations",
"main": {
"temp": 284.923,
"temp_min": 284.923,
"temp_max": 284.923,
"pressure": 1012.18,
"sea_level": 1023.56,
"grnd_level": 1012.18,
"humidity": 67
},
"wind": {
"speed": 6.06,
"deg": 219.002
},
"clouds": {
"all": 0
},
"dt": 1430875602,
"id": 0,
"name": "Nuth",
"cod": 200
}
显示结果
// sample to access coord
echo $decode->coord->lon;
echo $decode->coord->lat;
// sample to access sys
echo $decode->sys->message;
echo $decode->sys->country;
// sample to access weather
echo $decode->weather[0]->id;
echo $decode->weather[0]->main;
echo $decode->weather[0]->description;
// sample to access main
echo $decode->main->temp;
echo $decode->main->temp_min;
// sample to access wind
echo $decode->wind->speed;
// sample to access clouds
echo $decode->clouds->all;
echo $decode->id;
echo $decode->name;
echo $decode->cod;
答案 1 :(得分:2)
此API http://api.openweathermap.org/data/2.5/weather?q=Schimmert,nl。得到一些像这样的数据
{
"coord": {
"lon": 5.83,
"lat": 50.91
},
"sys": {
"message": 0.039,
"country": "Netherlands",
"sunrise": 1430884846,
"sunset": 1430939149
},
"weather": [
{
"id": 800,
"main": "Clear",
"description": "Sky is Clear",
"icon": "01n"
}
],
"base": "stations",
"main": {
"temp": 284.923,
"temp_min": 284.923,
"temp_max": 284.923,
"pressure": 1012.18,
"sea_level": 1023.56,
"grnd_level": 1012.18,
"humidity": 67
},
"wind": {
"speed": 6.06,
"deg": 219.002
},
"clouds": {
"all": 0
},
"dt": 1430875157,
"id": 2749752,
"name": "Nuth",
"cod": 200
}
试试这个
<?php
$getData = file_get_contents("http://api.openweathermap.org/data/2.5/weather?q=Schimmert,nl."); // get your json data
$decode = json_decode($getData); // decode it to be an object
// echo "<pre>";
// print_r($decode);
// you can get the data with
echo "Country : " . $decode->sys->country; echo '<br>';
for($i=0;$i<count($decode->weather);$i++){
echo "ID : " . $decode->weather[0]->id; echo '<br>';
echo "Weather : " . $decode->weather[0]->main; echo '<br>';
echo "Description : " . $decode->weather[0]->description; echo '<br>';
echo "Icon : " . $decode->weather[0]->icon; echo '<br>';
}
echo "Temperature : " . $decode->main->temp; echo '<br>';
echo "Temp Min : " . $decode->main->temp_min; echo '<br>';
echo "Temp Max : " . $decode->main->temp_max; echo '<br>';
echo "Preassure : " . $decode->main->pressure; echo '<br>';
echo "Sea Level : " . $decode->main->sea_level; echo '<br>';
echo "Ground Level : " . $decode->main->grnd_level; echo '<br>';
echo "Humidity : " . $decode->main->humidity; echo '<br>';
echo "Wind Speed : " . $decode->wind->speed; echo '<br>';
echo "Wind Degrees : " . $decode->wind->deg; echo '<br>';
echo "Cloud : " . $decode->clouds->all; echo '<br>';
?>
答案 2 :(得分:1)
如果您想将JSON用作数组,则只需将 true 作为json_decode
的第二个参数传递。
$getData = file_get_contents( "http://api.openweathermap.org/data/2.5/weather?q=Schimmert,nl");
$decode = json_decode($getData, true);
echo "<pre>";
print_r($decode);