Autore Topic: Più parsing nello stesso file PHP  (Letto 479 volte)

Offline Auron

  • Utente junior
  • **
  • Post: 104
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Motorola Milestone Android 2.2.1
  • Sistema operativo:
    Windows
Più parsing nello stesso file PHP
« il: 23 Agosto 2011, 16:23:21 CEST »
0
Salve gente,

Collegandomi più volte allo stesso file PHP contenente tutte le query che devo effettuare succede che ogni volta che eseguo una query diversa del file PHP il risultato che ottengo è ovviamente sempre diverso.
Ho creato una tabella in mysql contentente usrname e psw.
Dal file PHP eseguo:
una query che mi restituisce l'usrname
una query che mi restituisce la psw

Ora, avendo creato una funzione che funge da Parsing Json come faccio a fargli capire che una volta mi dovrà restituire il parsing dell'username restituito così: [{"usrname":"user1"}] e una volta il parsing della password restituito così: [{"psw":"psw1"}]

nel layout ho 2 bottoni:
1) si connette al PHP, esegue la QUERY e restituisce usrname passando dalla funzione di Parse
2) si connette al PHP, esegue la QUERY e restituisce psw passando dalla funzione di Parse

la funzione è questa:
Codice (Java): [Seleziona]
private String parse(String s) {
                try {
                        JSONArray array = new JSONArray(s);

                        for (int i = 0; i < array.length(); i++) {
                                jobj = array.getJSONObject(i);
                        }

                        user = jobj.getString("usrname");  //se clicco sul bottone 2 da errore questa riga
                        paswd = jobj.getString("psw"); //se clicco sul bottone 1 da errore questa riga

                        return paswd;
                } catch (JSONException e) {
                        Log.e("Err", e.toString());
                        return null;
                }
        }

se clicco sul bottone 1 da errore
Codice: [Seleziona]
08-23 12:48:22.459: ERROR/Err(1129): org.json.JSONException: No value for pswOvvio perchè quando il debug passa dalla funzione "parse" dal mio codice si aspetta di trovare un JsonObject che si chiami psw, ma avendo eseguito la query che da questo risultato: [{"usrname":"user1"}] non può trovarlo.

se clicco sul bottone 2 da quindi quest altro errore
Codice: [Seleziona]
08-23 12:48:22.459: ERROR/Err(1129): org.json.JSONException: No value for usrname
Qualcuno sa come sistemare la funzione per far si che non esca più l'errore?
« Ultima modifica: 23 Agosto 2011, 16:27:49 CEST da stefanoadsl »
È stata trovata una soluzione al tuo problema?Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;-)

Offline Auron

  • Utente junior
  • **
  • Post: 104
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Motorola Milestone Android 2.2.1
  • Sistema operativo:
    Windows
Re:Più parsing nello stesso file PHP
« Risposta #1 il: 29 Agosto 2011, 19:38:03 CEST »
0
Ho risolto così:

Codice (Java): [Seleziona]
private String parse(String s) {
                try {
                        JSONArray array = new JSONArray(s);

                        for (int i = 0; i < array.length(); i++) {
                                jobj = array.getJSONObject(i);
                        }
                        user = jobj.optString("usrname");                      
                        paswd = jobj.optString("psw");

                        if (user != null)
                                return user;
                        if (paswd != null)
                                return paswd;

                } catch (JSONException e) {
                        Log.e("Err", e.toString());
                        return null;
                }
        }

Sostituendo getString con optString così che cattura in automatico i NULL delle stringhe inesistenti

Il for l'ho lasciato in caso la SELECT dal file PHP risulti composta da più di un attributo
È stata trovata una soluzione al tuo problema?Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;-)