Visualizzazione dei risultati da 1 a 7 su 7

Hybrid View

  1. #1
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    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.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  2. #2
    Quote Originariamente inviata da LeleFT Visualizza il messaggio
    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.

    Ho visto ora il tuo messaggio... che dire... GRAZIE ("grazie volutamente con il MAIUSC)
    Un esempio vale più di mille guide e tutorial!!! L'ho provato, messo qua e la un po' di try-catch e funziona a meraviglia!
    Ora studio bene bene il tuo codice, che userò come punto di partenza per apprendere nuove cose.
    Grazie ancora! Il post lo posso definire RISOLTO

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.