Autore Topic: Problema GSON deserialize type  (Letto 578 volte)

Offline dan

  • Nuovo arrivato
  • *
  • Post: 16
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    nexus one
  • Sistema operativo:
    ubuntu
Problema GSON deserialize type
« il: 03 Marzo 2011, 17:08:33 CET »
0
Ciao a tutti,

Ho un problema con il parsing di un json, vorrei sapere se qualcuno di voi è mai capitato di "inciampare" in un problema simile al mio e se puo' quindi aiutarmi a risolverlo in fretta.

Il JSON che ricevo ha una variabile che puo' essere sia un OBJECT STRING ( { } )che una LISTA ( [ ] ) .. Quindi quando vado a parsare Gson si arrabbia perchè nella mia classe ho configurato la variabile come obj e in un caso invece si trova una lista nulla .

Come posso risolvere ? devo andare di polimorfismo?

Ciao,
dan

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:Problema GSON deserialize type
« Risposta #1 il: 03 Marzo 2011, 17:40:31 CET »
0
una volta che hai il tuo JSONObject, puoi forzare il getJSONObject o il getJSONArray del contenuto....in entrambi i casi, se falliscono generano una JSONException, così se non è l'uno, è l'altro.....
JSONObject | Android Developers
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline Nicola_D

  • Moderatore
  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Problema GSON deserialize type
« Risposta #2 il: 03 Marzo 2011, 17:44:13 CET »
0
una volta che hai il tuo JSONObject, puoi forzare il getJSONObject o il getJSONArray del contenuto....in entrambi i casi, se falliscono generano una JSONException, così se non è l'uno, è l'altro.....
JSONObject | Android Developers
no ma lui parla di GSON, il parser "automatico"...
purtroppo io faccio parsing a mano,quindi non ti so aiutare...
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline dan

  • Nuovo arrivato
  • *
  • Post: 16
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    nexus one
  • Sistema operativo:
    ubuntu
Re:Problema GSON deserialize type
« Risposta #3 il: 03 Marzo 2011, 17:51:30 CET »
0
Si esatto.. io uso gson perchè mi son trovato da subito bene e mi son fidato del codice di google, sperando che sia veramente ottimizzato :-)

Pero' l'unico problema è che se una variabile è di due type crasha :-(

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:Problema GSON deserialize type
« Risposta #4 il: 04 Marzo 2011, 08:59:45 CET »
0
^_^
non avevo fatto caso al titolo preciso....eheheheheh
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline Nicola_D

  • Moderatore
  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Problema GSON deserialize type
« Risposta #5 il: 04 Marzo 2011, 10:34:34 CET »
0
Si esatto.. io uso gson perchè mi son trovato da subito bene e mi son fidato del codice di google, sperando che sia veramente ottimizzato :-)

Pero' l'unico problema è che se una variabile è di due type crasha :-(

credo che sia normale, perchè il GSON non può sapere cosi a caso che una variabile è o int o double (per esempio).
Secondo me la cosa migliore è che ti fai due oggetti, uno che contiene il primo tipo, l'altro che contiene la lista.
poi metti il deserialize sotto try catch (non so che eccezione possa lanciare)...
nel try metti il primo tentativo di deserialize, nel catch quello con la lista... è un po raw ma dovrebbe funzionare...
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline dan

  • Nuovo arrivato
  • *
  • Post: 16
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    nexus one
  • Sistema operativo:
    ubuntu
Re:Problema GSON deserialize type
« Risposta #6 il: 04 Marzo 2011, 10:38:02 CET »
0
Si esatto per ora ho fatto così e ti confermo che funziona..

Non so se lasciare aperto il topic con questa soluzione oppure se trovo piu' in là n'altra soluzione ritorno qui e la scrivo..

Per ora comunque se fate così come ha scritto Nicola confermo che funziona.

Ciao,
Dan

PS: grazie nik per la reply