Json decoding and mapping in php

So, I have a list with local weather data, http://api.openweathermap.org/data/2.5/weather?q=Schimmert,nl . And I want to display some of them in education through php on my site, but I can’t really find out how JSON is something completely new to me.

And the only thing that I managed to do right now is the following: http://jeroenonline.biz/JSON/index.php . So this is a simple script:

$getData = file_get_contents( "http://api.openweathermap.org/data/2.5/weather?q=Schimmert,nl"); $decode = json_decode($getData); echo "<pre>"; print_r($decode); 
+6
source share
3 answers

using the link

http://api.openweathermap.org/data/2.5/weather?q=Schimmert,nl

without the "." gives me an answer

 { "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']; 

therefore when using the link with ..

http://api.openweathermap.org/data/2.5/weather?q=Schimmert,nl .

gives the answer:

 { "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 } 

to show the result

 // 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; 
+6
source

this API is http://api.openweathermap.org/data/2.5/weather?q=Schimmert,nl . get some data like this

 { "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 } 

try it

 <?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
source

If you want to use JSON as an array, you just need to pass true as the second paragraph for 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); 
+1
source

Source: https://habr.com/ru/post/986616/


All Articles