J'essaie d'exécuter un bot de télégramme qui renvoie la météo actuelle (avec l'aide de l'ip détectée par l'utilisateur d'une autre fonction), mais l'analyse JSON ne fonctionne pas correctement. Je reçois "Exception dans le fil" null Télégramme Executor "java.lang.StackOverflowError" de la dernière ligne avant le retour. Une autre approche à ceci a donné "l'exception de pointeur nul", où j'ai suivi un exemple d'ici. Un moyen d'analyser un JSON avec Java et GSON?Java JSON analyse d'objet
public String palautaSaatila() throws MalformedURLException, IOException {
String sURL = "http://api.wunderground.com/api/" + wundergroundApikey + "/conditions/q/" + valtio + "/" + kaupunki + ".json";
System.out.println(sURL);
// Connect to the URL using java's native library
URL url = new URL(sURL);
HttpURLConnection request = (HttpURLConnection) url.openConnection();
request.connect();
System.out.println("Connect ok");
// Convert to a JSON object to print data
JsonParser jp = new JsonParser(); //from gson
JsonElement root = jp.parse(new InputStreamReader((InputStream) request.getContent())); //Convert the input stream to a json element
JsonObject rootobj = root.getAsJsonObject(); //May be an array, may be an object.
String tempSaatila = new JSONObject(rootobj).toString(2);
return tempSaatila;
}
La réponse JSON ressemble à ceci, je ne ai besoin du « temps » clé:
{
"response": {
"version":"0.1",
"termsofService":"http://www.wunderground.com/weather/api/d/terms.html",
"features": {
"conditions": 1
}
},
"current_observation": {
"image": {
"url":"http://icons.wxug.com/graphics/wu2/logo_130x80.png",
"title":"Weather Underground",
"link":"http://www.wunderground.com"
},
"display_location": {
"full":"Oulu, Finland",
"city":"Oulu",
"state":"",
"state_name":"Finland",
"country":"FI",
"country_iso3166":"FI",
"zip":"00000",
"magic":"138",
"wmo":"02876",
"latitude":"65.01999664",
"longitude":"25.46999931",
"elevation":"14.9"
},
"observation_location": {
"full":"Oulu, Oulu, ",
"city":"Oulu, Oulu",
"state":"",
"country":"FI",
"country_iso3166":"FI",
"latitude":"64.984344",
"longitude":"25.499750",
"elevation":"30 ft"
},
"estimated": {
},
"station_id":"IOULU38",
"observation_time":"Last Updated on October 19, 9:17 PM EEST",
"observation_time_rfc822":"Thu, 19 Oct 2017 21:17:35 +0300",
"observation_epoch":"1508437055",
"local_time_rfc822":"Thu, 19 Oct 2017 21:18:13 +0300",
"local_epoch":"1508437093",
"local_tz_short":"EEST",
"local_tz_long":"Europe/Helsinki",
"local_tz_offset":"+0300",
"weather":"Mostly Cloudy",
"temperature_string":"34.2 F (1.2 C)",
"temp_f":34.2,
"temp_c":1.2,
"relative_humidity":"99%",
"wind_string":"Calm",
"wind_dir":"SW",
"wind_degrees":233,
"wind_mph":0.0,
"wind_gust_mph":0,
"wind_kph":0,
"wind_gust_kph":0,
"pressure_mb":"1018",
"pressure_in":"30.06",
"pressure_trend":"0",
"dewpoint_string":"34 F (1 C)",
"dewpoint_f":34,
"dewpoint_c":1,
"heat_index_string":"NA",
"heat_index_f":"NA",
"heat_index_c":"NA",
"windchill_string":"34 F (1 C)",
"windchill_f":"34",
"windchill_c":"1",
"feelslike_string":"34 F (1 C)",
"feelslike_f":"34",
"feelslike_c":"1",
"visibility_mi":"6.2",
"visibility_km":"10.0",
"solarradiation":"0",
"UV":"0.0","precip_1hr_string":"0.00 in (0 mm)",
"precip_1hr_in":"0.00",
"precip_1hr_metric":" 0",
"precip_today_string":"0.00 in (0 mm)",
"precip_today_in":"0.00",
"precip_today_metric":"0",
"icon":"mostlycloudy",
"icon_url":"http://icons.wxug.com/i/c/k/nt_mostlycloudy.gif",
"forecast_url":"http://www.wunderground.com/global/stations/02876.html",
"history_url":"http://www.wunderground.com/weatherstation/WXDailyHistory.asp?ID=IOULU38",
"ob_url":"http://www.wunderground.com/cgi-bin/findweather/getForecast?query=64.984344,25.499750",
"nowcast":""
}
}
Vous pourriez Enregistrez la sortie json dans un fichier et essayez simplement d'analyser les données de ce fichier. L'exception "null Telegram Executor" semble non pertinente pour l'analyse JSON. – hkasera