Note that there are some explanatory texts on larger screens.

plurals
  1. POReading JSON from Url java
    text
    copied!<p>I am having trouble with parson the JSON from a URL. Below, is the code. </p> <pre><code>import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.URL; import java.util.List; import com.google.gson.Gson; public class Test_Application { /** * @param args * @throws Exception */ public static void main(String[] args) throws Exception { // TODO Auto-generated method stub Gson gson = new Gson(); String json = readUrl("http://api.wunderground.com/api/57dd9039b81a9c21/conditions/q/CA/San_Francisco.json"); Page page = gson.fromJson(json, Page.class); System.out.println(page.description); System.out.println(page.language); System.out.println(page.link); System.out.println(page.title); } private static String readUrl(String urlString) throws Exception { BufferedReader reader = null; try { URL url = new URL(urlString); reader = new BufferedReader(new InputStreamReader(url.openStream())); StringBuffer buffer = new StringBuffer(); int read; char[] chars = new char[1024]; while ((read = reader.read(chars)) != -1) buffer.append(chars, 0, read); return buffer.toString(); } finally { if (reader != null) reader.close(); } } static class Page { String title; String link; String description; String language; List&lt;Item&gt; items; } static class Item { String title; String link; String description; } } </code></pre> <p>The output is: </p> <pre><code>null null null null </code></pre> <p>What I think the problem is that, I have an inappropriate class to read the data. Would that be correct?</p> <p>Thanks</p> <p><strong>EDIT</strong></p> <p>The website returns the following: </p> <pre><code>{ "response": { "version": "0.1", "termsofService": "http://www.wunderground.com/weather/api/d/terms.html", "features": { "conditions": 1 } }, "current_observation": { "image": { "url": "http://icons-ak.wxug.com/graphics/wu2/logo_130x80.png", "title": "Weather Underground", "link": "http://www.wunderground.com" }, "display_location": { "full": "San Francisco, CA", "city": "San Francisco", "state": "CA", "state_name": "California", "country": "US", "country_iso3166": "US", "zip": "94101", "latitude": "37.77500916", "longitude": "-122.41825867", "elevation": "47.00000000" }, "observation_location": { "full": "SOMA - Near Van Ness, San Francisco, California", "city": "SOMA - Near Van Ness, San Francisco", "state": "California", "country": "US", "country_iso3166": "US", "latitude": "37.773285", "longitude": "-122.417725", "elevation": "49 ft" }, "estimated": { }, "station_id": "KCASANFR58", "observation_time": "Last Updated on February 19, 7:08 AM PST", "observation_time_rfc822": "Tue, 19 Feb 2013 07:08:18 -0800", "observation_epoch": "1361286498", "local_time_rfc822": "Tue, 19 Feb 2013 07:08:31 -0800", "local_epoch": "1361286511", "local_tz_short": "PST", "local_tz_long": "America/Los_Angeles", "local_tz_offset": "-0800", "weather": "Mostly Cloudy", "temperature_string": "47.9 F (8.8 C)", "temp_f": 47.9, "temp_c": 8.8, "relative_humidity": "87%", "wind_string": "From the SW at 4.0 MPH Gusting to 13.0 MPH", "wind_dir": "SW", "wind_degrees": 225, "wind_mph": 4.0, "wind_gust_mph": "13.0", "wind_kph": 6.4, "wind_gust_kph": "20.9", "pressure_mb": "1012", "pressure_in": "29.90", "pressure_trend": "-", "dewpoint_string": "44 F (7 C)", "dewpoint_f": 44, "dewpoint_c": 7, "heat_index_string": "NA", "heat_index_f": "NA", "heat_index_c": "NA", "windchill_string": "46 F (8 C)", "windchill_f": "46", "windchill_c": "8", "feelslike_string": "46 F (8 C)", "feelslike_f": "46", "feelslike_c": "8", "visibility_mi": "10.0", "visibility_km": "16.1", "solarradiation": "", "UV": "0", "precip_1hr_string": "0.00 in ( 0 mm)", "precip_1hr_in": "0.00", "precip_1hr_metric": " 0", "precip_today_string": "0.02 in (1 mm)", "precip_today_in": "0.02", "precip_today_metric": "1", "icon": "mostlycloudy", "icon_url": "http://icons-ak.wxug.com/i/c/k/mostlycloudy.gif", "forecast_url": "http://www.wunderground.com/US/CA/San_Francisco.html", "history_url": "http://www.wunderground.com/weatherstation/WXDailyHistory.asp?ID=KCASANFR58", "ob_url": "http://www.wunderground.com/cgi-bin/findweather/getForecast?query=37.773285,-122.417725" } } </code></pre> <p><strong>Updated code</strong></p> <pre><code>import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.URL; import java.util.List; import com.google.gson.Gson; public class Test_Application { /** * @param args * @throws Exception */ public static void main(String[] args) throws Exception { // TODO Auto-generated method stub Gson gson = new Gson(); String json = readUrl("http://api.wunderground.com/api/57dd9039b81a9c21/conditions/q/CA/San_Francisco.json"); // Page page = gson.fromJson(json, Page.class); Response response = gson.fromJson(json, Response.class); System.out.println(response.termsOfService); System.out.println(response.version); } private static String readUrl(String urlString) throws Exception { BufferedReader reader = null; try { URL url = new URL(urlString); reader = new BufferedReader(new InputStreamReader(url.openStream())); StringBuffer buffer = new StringBuffer(); int read; char[] chars = new char[1024]; while ((read = reader.read(chars)) != -1) buffer.append(chars, 0, read); return buffer.toString(); } finally { if (reader != null) reader.close(); } } static class Response{ String version; String termsOfService; } } </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload