
Originariamente inviata da
LeleFT
Questo è un esempio molto molto banale (e assolutamente senza fronzoli, né gestione eccezioni o altro) che usa il JSON di Yahoo Weather e la libreria che ho linkato sopra:
codice:
public static void main(String[] args) throws Exception {
String urlPrefix = "https://query.yahooapis.com/v1/public/yql?q=";
String urlSuffix = "&format=json&diagnostics=true&callback=";
// Query da eseguire su Yahoo Weather
String urlQuery = "select * from weather.forecast where woeid=2502265";
// Costruisco l'URL (avendo l'accortezza di fare l'encoding della query)
URL myURL = new URL(urlPrefix + URLEncoder.encode(urlQuery, "UTF-8") + urlSuffix);
// Ottengo la connessione al servizio
URLConnection con = myURL.openConnection();
// Preparo lo StringBuilder che accoglierà il JSON
StringBuilder myJson = new StringBuilder();
// Eseguo la request e leggo il risultato
InputStream is = con.getInputStream();
// Essendo che ricevo un JSON (quindi una stringa) posso usare in Reader
InputStreamReader reader = new InputStreamReader( is );
BufferedReader br = new BufferedReader( reader );
String line = null;
// Leggo finchè ci sono dati da leggere
while((line = br.readLine()) != null) {
myJson.append( line );
}
// Ho finito, chiudo la connessione
br.close();
// Costruisco il JSON
JSONObject json = new JSONObject( myJson.toString() );
// Ci faccio quel che devo.
// Ad esempio, stampo le previsioni per tutti i giorni:
JSONObject jsonQuery = json.getJSONObject("query");
JSONObject queryResults = jsonQuery.getJSONObject("results");
JSONObject channel = queryResults.getJSONObject("channel");
JSONObject resItem = channel.getJSONObject("item");
JSONArray forecasts = resItem.getJSONArray("forecast");
for(int i=0; i<forecasts.length(); i++) {
JSONObject fc = forecasts.getJSONObject( i );
System.out.println("Data: " + fc.getString("date"));
System.out.println("Previsione: " + fc.getString("text"));
System.out.println();
}
}
Ciao.
