Autore Topic: json e array  (Letto 1769 volte)

Offline roby8517

  • Nuovo arrivato
  • *
  • Post: 13
  • Respect: 0
    • Mostra profilo
json e array
« il: 31 Luglio 2011, 22:46:00 CEST »
0
salve,

sto creando un programma che visualizza alcune informazioni lette in un file json disponibile da remoto, dato che nn sono molto bravo in tutto cio vi chiedo un aiuto.

in sostanza ho un file json fatto cosi
Codice (XML): [Seleziona]
{
    "program":[
                        {"id":"1","giorno":"thu","ora_in":"19:00","ora_out":"20:00","nome":"bokill"},
                        {"id":"2","giorno":"thu","ora_in":"20:00","ora_out":"22:00","nome":"bokill2"},
                        {"id":"3","giorno":"thu","ora_in":"22:00","ora_out":"23:00","nome":"bokill3"},
           
    ],
   
}

in remoto quindi ogni volta devo scaricarlo e leggerlo, una volta letto vorrei riempire un array in modo da poterci lavorare sopra

qualcuno puo darmi una mano? ne sarei molto grado

Roberto
« Ultima modifica: 01 Agosto 2011, 00:45:11 CEST da roby8517 »

Offline DarnellNajanReed

  • Utente normale
  • ***
  • Post: 359
  • Respect: +49
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    LG Optimus One, Acer Iconia A500/501, Asus Transformer Prime, Galaxy ACE, Galaxy S Plus, Galaxy S Advance P, Galaxy Tab 2 7.0, Google Nexus 7
  • Play Store ID:
    Luigi Notaro
  • Sistema operativo:
    OS X 10.8.3
Re:json e array
« Risposta #1 il: 01 Agosto 2011, 01:25:11 CEST »
0
Ciao,
magari puoi provare con la classe JSONobj che ti converte un JSON in un corrispondente oggetto Java. Per esempio, sia myResponse la stringa contenente il JSON:

                           
Codice (Java): [Seleziona]
 
                            //Nuovo oggetto JSONobj
                            JSONObject jObjectCollection;

                            //Lo istanzio dal costruttore stringa, ricavato dalla risposta HTTP
                            jObjectCollection = new JSONObject(myResponse);
                           
                            //Recupero il primo item
                            JSONObject itemObject = jObjectCollection.getJSONObject(0);
                           
                            //Recupero il valore della chiave giorno del primo item
                            String giorno = itemObject.getString("giorno");
                           
                            Log.i("giorno item 0", giorno);

Così stampi solo il giorno dell'item 0, magari con un ciclo for potresti mappare l'intero JSON su un array. Non so se ci sia un metodo più diretto.... sono ancora agli inizi :-\

Offline denper

  • Utente normale
  • ***
  • Post: 290
  • Respect: +60
    • Mostra profilo
    • Anddenper
  • Dispositivo Android:
    Moto G
  • Play Store ID:
    denper
  • Sistema operativo:
    Window 7, Windows XP
Re:json e array
« Risposta #2 il: 01 Agosto 2011, 12:26:00 CEST »
0
In linea teorica:

Codice (Java): [Seleziona]
JSONArray array = new JSONArray(string_of_json_array);
for (int i = 0; i < array.length(); i++) {
    JSONObject row = array.getJSONObject(i);
    int id = row.getInt('id');
    String giorno = row.getString("giorno");
    ...
}
Tutti sanno che una cosa è impossibile da realizzare, finché arriva uno sprovveduto che non lo sa e la inventa. [A.Einstein]

Proteggi la tua privacy! Utilizza GhostPhone! https://play.google.com/store/apps/details?id=com.denper.gp
Giochi a Winforlife e Superenalotto e sei stanco di controllare le tue schedine manualmente? Prova Checkwin: https://play.google.com/store/apps/details?id=com.denper.checkwintrial

Offline roby8517

  • Nuovo arrivato
  • *
  • Post: 13
  • Respect: 0
    • Mostra profilo
Re:json e array
« Risposta #3 il: 01 Agosto 2011, 13:49:30 CEST »
0
allora io ho proveto a fare cosi spero che nn ci siano errori ci sono errori?
ora vorrei popolare un array come posso fare?

Codice (Java): [Seleziona]
package com.javacodegeeks.android.json;

import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;

import com.google.gson.Gson;


public class JsonParsingActivity extends Activity {
       
        String url = "http://www.miosito.it/source/pro_mob.json";
       
    @Override
    public void onCreate(Bundle savedInstanceState) {
       
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        InputStream source = retrieveStream(url);
       
        Gson gson = new Gson();
        Reader reader = new InputStreamReader(source);
        Programmi dati = new Programmi();
        try
        {
            dati = gson.fromJson(reader, Programmi.class);
        }
        catch (Exception e)
        {
                System.out.println("fallito");
       
        }
       
       
    }
   
    private InputStream retrieveStream(String url) {
       
        DefaultHttpClient client = new DefaultHttpClient();
       
        HttpGet getRequest = new HttpGet(url);
         
        try {
           
           HttpResponse getResponse = client.execute(getRequest);
           final int statusCode = getResponse.getStatusLine().getStatusCode();
           
           if (statusCode != HttpStatus.SC_OK) {
              Log.w(getClass().getSimpleName(), "Error " + statusCode + " for URL " + url);
              return null;
           }

           HttpEntity getResponseEntity = getResponse.getEntity();
           return getResponseEntity.getContent();
           
        }
        catch (IOException e) {
           getRequest.abort();
           Log.w(getClass().getSimpleName(), "Error for URL " + url, e);
        }
       
        return null;
       
     }
    //La classe Program che modella la struttura più interna
    public class Program
    {
            int Program_id;
            String Giorno;
            String Ora_in;
            String Ora_out;
            String Nome;
           
            public Program() {
                    super();
            }
            //Program_id
            public int getProgram_id(){
                    return Program_id;
            }
            public void setProgram_id(int Program_id)
            {
                    this.Program_id = Program_id;
            }
            //Giorno
            public String getGiorno()
            {
                    return Giorno;
            }
            public void setGiorno(String Giorno)
            {
                    this.Giorno = Giorno;
            }
            //Ora_in
            public String getOra_in()
            {
                    return Ora_in;
            }
            public void setOra_in(String Ora_in)
            {
                    this.Ora_in = Ora_in;
            }
            //Ora_out
            public String getOra_out()
            {
                return Ora_out;
            }
            public void setOra_out(String Ora_out)
            {
                    this.Ora_out = Ora_out;
            }
            //nome
            public String getNome()
            {
                return Nome;
            }
            public void setNome(String Nome)
            {
                    this.Nome = Nome;
            }

         }
    //La classe programmi per gestire la struttura interna:
    public class Programmi
    {
            public Programmi() {
                    super();
            }

            ArrayList<Program> Program;

            public ArrayList<Program> getProgram() {
                    return Program;
            }

            public void setApplicazione(ArrayList<Program> Program) {
                    this.Program = Program;
            }
    }
}


Offline denper

  • Utente normale
  • ***
  • Post: 290
  • Respect: +60
    • Mostra profilo
    • Anddenper
  • Dispositivo Android:
    Moto G
  • Play Store ID:
    denper
  • Sistema operativo:
    Window 7, Windows XP
Re:json e array
« Risposta #4 il: 01 Agosto 2011, 14:44:58 CEST »
0
Funziona?
Altrimenti prova in questo modo:

Codice (Java): [Seleziona]
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;

public class TestCode extends Activity {

        String url = "http://www.miosito.it/source/pro_mob.json";

        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.main);

                int id = -1;
                String giorno = null;
                String ora_in = null;
                String ora_out = null;
                String nome = null;
                Program program = null;

                ArrayList<Program> programArray = new ArrayList<Program>();

                String source = retrieveStream(url);
                try {
                        JSONObject jo = new JSONObject(source);
                        JSONArray ja = new JSONArray(jo.getString("program"));
                        for (int i = 0; i < ja.length(); i++) {
                                JSONObject row = ja.getJSONObject(i);
                                id = row.getInt("id");
                                giorno = row.getString("giorno");
                                ora_in = row.getString("ora_in");
                                ora_out = row.getString("ora_out");
                                nome = row.getString("nome");
                                program = new Program();
                                program.setProgram_id(id);
                                program.setGiorno(giorno);
                                program.setOra_in(ora_in);
                                program.setOra_out(ora_out);
                                program.setNome(nome);
                                programArray.add(program);

                        }
                } catch (JSONException e) {
                        // TODO Auto-generated catch block
                        Log.e("log_tag", "Error json " + e.toString());
                }
                Programmi dati = new Programmi();
                dati.setApplicazione(programArray);

        }

        private String retrieveStream(String url) {

                // Stub per test
                if (true)
                        return "{\"program\":[{\"id\":\"1\",\"giorno\":\"thu\",\"ora_in\":\"19:00\",\"ora_out\":\"20:00\",\"nome\":\"bokill\"},{\"id\":\"2\",\"giorno\":\"thu\",\"ora_in\":\"20:00\",\"ora_out\":\"22:00\",\"nome\":\"bokill2\"},{\"id\":\"3\",\"giorno\":\"thu\",\"ora_in\":\"22:00\",\"ora_out\":\"23:00\",\"nome\":\"bokill3\"}]}";

                DefaultHttpClient client = new DefaultHttpClient();

                HttpGet getRequest = new HttpGet(url);

                try {

                        HttpResponse getResponse = client.execute(getRequest);
                        final int statusCode = getResponse.getStatusLine().getStatusCode();

                        if (statusCode != HttpStatus.SC_OK) {
                                Log.w(getClass().getSimpleName(), "Error " + statusCode + " for URL " + url);
                                return null;
                        }

                        HttpEntity getResponseEntity = getResponse.getEntity();

                        // convert response to string
                        try {
                                BufferedReader reader = new BufferedReader(new InputStreamReader(getResponseEntity.getContent(), "iso-8859-1"), 8);
                                StringBuilder sb = new StringBuilder();
                                String line = null;
                                while ((line = reader.readLine()) != null) {
                                        sb.append(line + "\n");
                                }

                                return sb.toString();
                        } catch (Exception e) {
                                Log.e("log_tag", "Error converting result " + e.toString());
                        }

                } catch (IOException e) {
                        getRequest.abort();
                        Log.w(getClass().getSimpleName(), "Error for URL " + url, e);
                }

                return null;

        }

        // La classe Program che modella la struttura più interna
        public class Program {
                int Program_id;
                String Giorno;
                String Ora_in;
                String Ora_out;
                String Nome;

                public Program() {
                        super();
                }

                // Program_id
                public int getProgram_id() {
                        return Program_id;
                }

                public void setProgram_id(int Program_id) {
                        this.Program_id = Program_id;
                }

                // Giorno
                public String getGiorno() {
                        return Giorno;
                }

                public void setGiorno(String Giorno) {
                        this.Giorno = Giorno;
                }

                // Ora_in
                public String getOra_in() {
                        return Ora_in;
                }

                public void setOra_in(String Ora_in) {
                        this.Ora_in = Ora_in;
                }

                // Ora_out
                public String getOra_out() {
                        return Ora_out;
                }

                public void setOra_out(String Ora_out) {
                        this.Ora_out = Ora_out;
                }

                // nome
                public String getNome() {
                        return Nome;
                }

                public void setNome(String Nome) {
                        this.Nome = Nome;
                }

        }

        // La classe programmi per gestire la struttura interna:
        public class Programmi {
                public Programmi() {
                        super();
                }

                ArrayList<Program> Program;

                public ArrayList<Program> getProgram() {
                        return Program;
                }

                public void setApplicazione(ArrayList<Program> Program) {
                        this.Program = Program;
                }
        }
}
Attenzione nell'esempio di JSON del primo post c'è una ',' finale in più. Io nel mio codice l'ho tolta altrimenti il costruttore dell'oggetto JSONObject va in errore. Ovviamente il codice va un'pò sistemato, l'ho scritto in fretta per fare una prova...

denper.
Tutti sanno che una cosa è impossibile da realizzare, finché arriva uno sprovveduto che non lo sa e la inventa. [A.Einstein]

Proteggi la tua privacy! Utilizza GhostPhone! https://play.google.com/store/apps/details?id=com.denper.gp
Giochi a Winforlife e Superenalotto e sei stanco di controllare le tue schedine manualmente? Prova Checkwin: https://play.google.com/store/apps/details?id=com.denper.checkwintrial

Offline roby8517

  • Nuovo arrivato
  • *
  • Post: 13
  • Respect: 0
    • Mostra profilo
Re:json e array
« Risposta #5 il: 01 Agosto 2011, 20:25:21 CEST »
0
grazie per il tuo aiuto lo script funziona o almeno credo cmq in fase di emulazione nn da errore, ora stavo cercado di vedere cosa c'è nella array per questo ho usato
Codice (Java): [Seleziona]
Toast.makeText(JsonParsingActivity.this, dati.Program.get(0).getProgram_id(), Toast.LENGTH_LONG).show(); per recuperare id del primo oggetto ma in fase di emulazione mi da errore sai il perchè?

grazie mille


Offline denper

  • Utente normale
  • ***
  • Post: 290
  • Respect: +60
    • Mostra profilo
    • Anddenper
  • Dispositivo Android:
    Moto G
  • Play Store ID:
    denper
  • Sistema operativo:
    Window 7, Windows XP
Re:json e array
« Risposta #6 il: 01 Agosto 2011, 22:22:11 CEST »
0
Ciao, 
Codice (Java): [Seleziona]
dati.Program.get(0).getProgram_id()ti ritorna un int, mentre il metodo Toast.makeText come secondo parametro vuole un CharSequence.
Prova con
Codice (Java): [Seleziona]
Toast.makeText(JsonParsingActivity.this, String.valueOf(dati.Program.get(0).getProgram_id()), Toast.LENGTH_LONG).show();
Tutti sanno che una cosa è impossibile da realizzare, finché arriva uno sprovveduto che non lo sa e la inventa. [A.Einstein]

Proteggi la tua privacy! Utilizza GhostPhone! https://play.google.com/store/apps/details?id=com.denper.gp
Giochi a Winforlife e Superenalotto e sei stanco di controllare le tue schedine manualmente? Prova Checkwin: https://play.google.com/store/apps/details?id=com.denper.checkwintrial

Offline roby8517

  • Nuovo arrivato
  • *
  • Post: 13
  • Respect: 0
    • Mostra profilo
Re:json e array
« Risposta #7 il: 03 Agosto 2011, 13:04:40 CEST »
0
grazie per il tuo aiuto... oggi sono riuscito a mette online il file json per testare il tutto ma per la legge di murphy nn va, in sostanza mi da sempre errore sul toast premetto che se uso il json per il test funziana tutto

uffa come mai?

Offline denper

  • Utente normale
  • ***
  • Post: 290
  • Respect: +60
    • Mostra profilo
    • Anddenper
  • Dispositivo Android:
    Moto G
  • Play Store ID:
    denper
  • Sistema operativo:
    Window 7, Windows XP
Re:json e array
« Risposta #8 il: 03 Agosto 2011, 13:24:22 CEST »
0
Ciao,
sei sicuro che il json online sia corretto? prova a mettere l'url nel browser e vedere come arriva il json. in ogni caso debugga l'app così vedi dove va in errore...
Tutti sanno che una cosa è impossibile da realizzare, finché arriva uno sprovveduto che non lo sa e la inventa. [A.Einstein]

Proteggi la tua privacy! Utilizza GhostPhone! https://play.google.com/store/apps/details?id=com.denper.gp
Giochi a Winforlife e Superenalotto e sei stanco di controllare le tue schedine manualmente? Prova Checkwin: https://play.google.com/store/apps/details?id=com.denper.checkwintrial

Offline roby8517

  • Nuovo arrivato
  • *
  • Post: 13
  • Respect: 0
    • Mostra profilo
Re:json e array
« Risposta #9 il: 03 Agosto 2011, 13:35:47 CEST »
0
si si verifiche fatte l'unico errore da solo quando esegue il toast
cmq url è www.radiocicletta.it/source/pro_mob.json

Offline denper

  • Utente normale
  • ***
  • Post: 290
  • Respect: +60
    • Mostra profilo
    • Anddenper
  • Dispositivo Android:
    Moto G
  • Play Store ID:
    denper
  • Sistema operativo:
    Window 7, Windows XP
Re:json e array
« Risposta #10 il: 03 Agosto 2011, 13:39:39 CEST »
0
Da dove richiami il Toast? se sei dentro alla tua activity passagli this come primo parametro. In ogni caso qual'è l'errore nel LogCat?
Tutti sanno che una cosa è impossibile da realizzare, finché arriva uno sprovveduto che non lo sa e la inventa. [A.Einstein]

Proteggi la tua privacy! Utilizza GhostPhone! https://play.google.com/store/apps/details?id=com.denper.gp
Giochi a Winforlife e Superenalotto e sei stanco di controllare le tue schedine manualmente? Prova Checkwin: https://play.google.com/store/apps/details?id=com.denper.checkwintrial

Offline roby8517

  • Nuovo arrivato
  • *
  • Post: 13
  • Respect: 0
    • Mostra profilo
Re:json e array
« Risposta #11 il: 03 Agosto 2011, 14:56:19 CEST »
0
nn ho fatto nulla di strano ho solo tolto la parte di test in loco

nel logcat nn c'è nessun errore
Codice (Java): [Seleziona]
package play.radiocicletta;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.media.MediaPlayer;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;


public class activity_main extends Activity {
    /** Called when the activity is first created. */
        private Button play;
        private Button button_menu;
        private Button pause;
       
        private static int  play_up=0; // determino se sto ascoltando
        private static final int NOTIFICATION_ID = 1;
    NotificationManager mNotificationManager;
   
        public static MediaPlayer mp;
        public ConnectivityManager cm;
    PackageManager pm;

   
        private static final int MENU_COMANDO = 1;
        private static final int EXIT_COMANDO = 2;
       
        //metodo che controlla se Ë presente la connessione internet
        public boolean isOnline() {
        cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo ni = cm.getActiveNetworkInfo();
        if(ni == null)return false;
        return ni.isConnected();
    }
       
        //menu android
        @Override
    public boolean onCreateOptionsMenu(Menu menu) {
                menu.add(Menu.NONE, MENU_COMANDO, 1, "MENU").setIcon(android.R.drawable.ic_menu_view);
        menu.add(Menu.NONE, EXIT_COMANDO, 2, "EXIT").setIcon(android.R.drawable.ic_menu_close_clear_cancel);
        return true;
    }
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
                int id = item.getItemId();
                switch (id) {
                        case MENU_COMANDO:
                                Intent i = new Intent(activity_main.this, activitymenu.class);
                startActivity(i);

                        return true;
                        case EXIT_COMANDO:
                                if(mNotificationManager != null){
                    mNotificationManager.cancel(NOTIFICATION_ID);
                                }
                                android.os.Process.killProcess(android.os.Process.myPid());                    
                        return true;
                }
                return false;
        }
       
    public void onCreate(Bundle savedInstanceState) {
       
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        //notifica in background
        String ns =Context.NOTIFICATION_SERVICE;
        mNotificationManager = (NotificationManager) getSystemService(ns);
        int icon = android.R.drawable.ic_media_play;
        CharSequence tickerText = "Radiocicletta";
        long when = System.currentTimeMillis();
        Notification notification = new Notification(icon, tickerText, when);
        Context context = getApplicationContext();
        CharSequence contentTitle = "Radiocicletta";
        CharSequence contentText = "webradio ";
        Intent notificationIntent = new Intent(this, activity_main.class);
        PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
        notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
        notification.defaults |= Notification.DEFAULT_LIGHTS;   //LED
        mNotificationManager.notify(NOTIFICATION_ID, notification);
           
        //play script
        play=(Button) this.findViewById(R.id.play_button);
        play.setOnClickListener(new OnClickListener() {
                        public void onClick(View v) {
                          if(isOnline()){
                                    mp = new MediaPlayer();
                                        try {
                                                mp.setDataSource("http://www.radiocicletta.it:8000/stream");
                                        } catch (IOException e) {
                                                // TODO Auto-generated catch block
                                                Log.e(getClass().getName(), "Unable to initialize the MediaPlayer for fileUrl", e);
                                        }
                                        try {
                                                mp.prepare();
                                        }  catch (IOException e) {
                                                // TODO Auto-generated catch block
                                                Log.e(getClass().getName(), "Error starting to stream audio.", e);
                                        }
                                        mp.start();
                                       
                                        play_up=1;
                                        Toast.makeText(activity_main.this, "Play streaming...", Toast.LENGTH_SHORT).show();
               
                                        findViewById(R.id.play_button).setVisibility(View.GONE);
                                        findViewById(R.id.pause_button).setVisibility(View.VISIBLE);
                                       

                                       
                          }else{
                                Toast.makeText(activity_main.this, "NO Connesso a INTERNET", Toast.LENGTH_SHORT).show();}
         
                        }
        });
       
        //MENU BUTTTON
        button_menu=(Button)this.findViewById(R.id.menu_button);
        button_menu.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                //cambio layout
                Intent i = new Intent(activity_main.this, activitymenu.class);
                startActivity(i);
               
            }
        });
       
        // PAUSA BUTTON
        pause =(Button)this.findViewById(R.id.pause_button);
        pause.setOnClickListener(new OnClickListener() {
             public void onClick(View v) {
                 
                 findViewById(R.id.pause_button).setVisibility(View.GONE);
                 findViewById(R.id.play_button).setVisibility(View.VISIBLE);
                        mp.stop();
                               
           
                        Toast.makeText(activity_main.this, "Stop/pausa streaming", Toast.LENGTH_SHORT).show();

                 }
        });
       
        // decido cosa far vedere: se ho gia clikkato il play vedo pausa_button
        if(play_up==1){
                        findViewById(R.id.play_button).setVisibility(View.GONE);
                        findViewById(R.id.pause_button).setVisibility(View.VISIBLE);
        }
       
        //leggo la versione dell'app
        pm= getPackageManager();
        try {
            //---get the package info---
            PackageInfo pi =  pm.getPackageInfo("play.radiocicletta", 0);
            //---display the versioncode---
            Toast.makeText(activity_main.this, "VersionCode: " +Integer.toString(pi.versionCode), Toast.LENGTH_SHORT).show();      
        } catch (NameNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
       
        //cosa c'è ora in onda
       
        String url = "http://www.radiocicletta.it/source/pro_mob.json";
        int id = -1;
        String giorno = null;
        String ora_in = null;
        String ora_out = null;
        String nome = null;
        Program program = null;
        ArrayList<Program> programArray = new ArrayList<Program>();

        String source = retrieveStream(url);
        try {
            JSONObject jo = new JSONObject(source);
            JSONArray ja = new JSONArray(jo.getString("program"));
            for (int i = 0; i < ja.length(); i++) {
                    JSONObject row = ja.getJSONObject(i);
                    id = row.getInt("Program_id");
                    giorno = row.getString("giorno");
                    ora_in = row.getString("ora_in");
                    ora_out = row.getString("ora_out");
                    nome = row.getString("nome");
                    program = new Program();
                    program.setProgram_id(id);
                    program.setGiorno(giorno);
                    program.setOra_in(ora_in);
                    program.setOra_out(ora_out);
                    program.setNome(nome);
                    programArray.add(program);

            }
        } catch (JSONException e) {
                // TODO Auto-generated catch block
                Log.e("log_tag", "Error json " + e.toString());
                }
        Programmi dati = new Programmi();
        dati.setApplicazione(programArray);
       //Toast.makeText(activity_main.this, dati.Program.get(0).getGiorno(), Toast.LENGTH_LONG).show();
             
       
    //leggo giorno/ora/min attuali
    final Calendar cal = Calendar.getInstance();
    cal.setTimeInMillis(System.currentTimeMillis());

    Date date = cal.getTime();
    int mHour = date.getHours();
    int mMinute = date.getMinutes();
    int mGiorno = date.getDate();
    System.out.println(mHour+":"+mMinute+" "+mGiorno );
    }
   
   
    private String retrieveStream(String url) {

    // Stub per test
    //if (true)
    //      return "{\"program\":[{\"Program_id\":\"1\",\"giorno\":\"thu\",\"ora_in\":\"19:00\",\"ora_out\":\"20:00\",\"nome\":\"bokill\"},{\"Program_id\":\"2\",\"giorno\":\"thu\",\"ora_in\":\"20:00\",\"ora_out\":\"22:00\",\"nome\":\"bokill2\"},{\"Program_id\":\"3\",\"giorno\":\"thu\",\"ora_in\":\"22:00\",\"ora_out\":\"23:00\",\"nome\":\"bokill3\"}]}";

                DefaultHttpClient client = new DefaultHttpClient();

                HttpGet getRequest = new HttpGet(url);

                try {

                        HttpResponse getResponse = client.execute(getRequest);
                        final int statusCode = getResponse.getStatusLine().getStatusCode();

                        if (statusCode != HttpStatus.SC_OK) {
                                Log.w(getClass().getSimpleName(), "Error " + statusCode + " for URL " + url);
                                return null;
                        }

                        HttpEntity getResponseEntity = getResponse.getEntity();

                        // convert response to string
                        try {
                                BufferedReader reader = new BufferedReader(new InputStreamReader(getResponseEntity.getContent(), "iso-8859-1"), 8);
                                StringBuilder sb = new StringBuilder();
                                String line = null;
                                while ((line = reader.readLine()) != null) {
                                        sb.append(line + "\n");
                                }

                                return sb.toString();
                        } catch (Exception e) {
                                Log.e("log_tag", "Error converting result " + e.toString());
                        }

                } catch (IOException e) {
                        getRequest.abort();
                        Log.w(getClass().getSimpleName(), "Error for URL " + url, e);
                }

                return null;

        }

        // La classe Program che modella la struttura più interna
    public class Program {
                int Program_id;
                String Giorno;
                String Ora_in;
                String Ora_out;
                String Nome;

                public Program() {
                        super();
                }

                // Program_id
                public int getProgram_id() {
                        return Program_id;
                }

                public void setProgram_id(int Program_id) {
                        this.Program_id = Program_id;
                }

                // Giorno
                public String getGiorno() {
                        return Giorno;
                }

                public void setGiorno(String Giorno) {
                        this.Giorno = Giorno;
                }

                // Ora_in
                public String getOra_in() {
                        return Ora_in;
                }

                public void setOra_in(String Ora_in) {
                        this.Ora_in = Ora_in;
                }

                // Ora_out
                public String getOra_out() {
                        return Ora_out;
                }

                public void setOra_out(String Ora_out) {
                        this.Ora_out = Ora_out;
                }

                // nome
                public String getNome() {
                        return Nome;
                }

                public void setNome(String Nome) {
                        this.Nome = Nome;
                }

        }

        // La classe programmi per gestire la struttura interna:
    public class Programmi {
                public Programmi() {
                        super();
                }

                ArrayList<Program> Program;

                public ArrayList<Program> getProgram() {
                        return Program;
                }

                public void setApplicazione(ArrayList<Program> Program) {
                        this.Program = Program;
                }
        }
}

Offline denper

  • Utente normale
  • ***
  • Post: 290
  • Respect: +60
    • Mostra profilo
    • Anddenper
  • Dispositivo Android:
    Moto G
  • Play Store ID:
    denper
  • Sistema operativo:
    Window 7, Windows XP
Re:json e array
« Risposta #12 il: 03 Agosto 2011, 15:35:33 CEST »
0
Scusami, ma Il toast viene visualizzato vuoto oppure non compare proprio?
Codice (Java): [Seleziona]
Toast.makeText(activity_main.this, String.valueOf(dati.getProgram().get(0).getProgram_id()), Toast.LENGTH_LONG).show();
// Per verifica scrivo i dati sul log
Log.v(getClass().getSimpleName(), "--> " + String.valueOf(dati.getProgram().get(0).getProgram_id()));
// Per ulteriore test decommenta qui
//Toast.makeText(activity_main.this, String.valueOf(programArray.get(0).getProgram_id()), Toast.LENGTH_LONG).show();
Tutti sanno che una cosa è impossibile da realizzare, finché arriva uno sprovveduto che non lo sa e la inventa. [A.Einstein]

Proteggi la tua privacy! Utilizza GhostPhone! https://play.google.com/store/apps/details?id=com.denper.gp
Giochi a Winforlife e Superenalotto e sei stanco di controllare le tue schedine manualmente? Prova Checkwin: https://play.google.com/store/apps/details?id=com.denper.checkwintrial

Offline roby8517

  • Nuovo arrivato
  • *
  • Post: 13
  • Respect: 0
    • Mostra profilo
Re:json e array
« Risposta #13 il: 03 Agosto 2011, 21:10:42 CEST »
0
esce una finestra con l'invito alla chiusura forzata del programma

Offline denper

  • Utente normale
  • ***
  • Post: 290
  • Respect: +60
    • Mostra profilo
    • Anddenper
  • Dispositivo Android:
    Moto G
  • Play Store ID:
    denper
  • Sistema operativo:
    Window 7, Windows XP
Re:json e array
« Risposta #14 il: 04 Agosto 2011, 08:05:22 CEST »
0
E che errore hai nel LogCat? Se esce una popup con errore, deve per forza esserci anche la descrizione nel LogCat.
Tutti sanno che una cosa è impossibile da realizzare, finché arriva uno sprovveduto che non lo sa e la inventa. [A.Einstein]

Proteggi la tua privacy! Utilizza GhostPhone! https://play.google.com/store/apps/details?id=com.denper.gp
Giochi a Winforlife e Superenalotto e sei stanco di controllare le tue schedine manualmente? Prova Checkwin: https://play.google.com/store/apps/details?id=com.denper.checkwintrial