Autore Topic: Problema JSONArray  (Letto 1147 volte)

Offline Agosteeno

  • Utente normale
  • ***
  • Post: 152
  • Respect: +2
    • Mostra profilo
  • Dispositivo Android:
    Sony Ericsson - Xperia Neo
  • Sistema operativo:
    Ubuntu 11.04
Problema JSONArray
« il: 23 Marzo 2011, 12:26:29 CET »
0
Salve a tutti, scrivo perche' ho un problema e nn riesco assolutamente a risolvere. Ho un'applicazione android che riceve una stringa da un server in formato JSON. Premessa: uso la libreria org.json. Ho definito una classe che JSONDato che ha tra i suoi campi alcuni JSONSottoDatoN (anche queste definite da me) che sono degli array. Il problema nasce dal fatto che quando vado a creare l'oggetto a partire dalla stringa ricevuta, non crea correttamente gli array. Per essere preciso li crea vuoti. Quando vado a fare il toString dell'oggetto creato, al posto dei dati che dovrebbero esserci (una cosa del genere:
 
{"array1":[{"campo":"valore1"},{"campo":"valore2"}...]...}

mi scrive questo:

{"array1":[L(da qua in poi una stringa che e' il nome del package + il nome della classe dove e' definito l'oggetto)(qua un codice di questo tipo: ;@4391a8e0)}

La cosa piu' fastidiosa che se faccio la stessa cosa su una classe java normale va' tutto bene.
Credo che android abbia qualche problema con i JSONArray, ma nn ho idea di cosa possa essere.
Se qualcuno ha avuto problemi simili ed ha un'idea di cosa possa essere gli saro' per sempre grato!!!
Risparmia l'acqua, bevi birra...

Offline Qlimax

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 757
  • Respect: +203
    • Google+
    • _Qlimax
    • Mostra profilo
    • www.egsolutions.ch
  • Dispositivo Android:
    Galaxy Nexus - Nexus One - Wildfire - Magic
  • Play Store ID:
    egsolutions.ch
  • Sistema operativo:
    Ubuntu 12.04, Windows 7
Re:Problema JSONArray
« Risposta #1 il: 23 Marzo 2011, 13:22:57 CET »
0
Devi definire il metodo public String toString() nelle classi definite da te.

nel metodo toString devi ritornare una stringa che rappresenta l'oggetto in forma testuale.

Di default il toString ha questa implementazione:

Object (Java 2 Platform SE v1.4.2)

che è quella che ottieni tu al momento.

Dai un occhiata qui:
Java toString Method | Java Beginner

Offline Agosteeno

  • Utente normale
  • ***
  • Post: 152
  • Respect: +2
    • Mostra profilo
  • Dispositivo Android:
    Sony Ericsson - Xperia Neo
  • Sistema operativo:
    Ubuntu 11.04
Re:Problema JSONArray
« Risposta #2 il: 23 Marzo 2011, 14:04:43 CET »
0
Si, lo avevo fatto. Ho scoperto che il problema era il fatto che annidavo oggetti dentro altri oggetti e su android a a quanto pare nn si puo' fare. Li ho dichiarati semplicemente JSONArray e ora sembra a posto...
Risparmia l'acqua, bevi birra...

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 JSONArray
« Risposta #3 il: 23 Marzo 2011, 16:21:37 CET »
0
mi spieghi meglio cosa vuol dire "il problema era il fatto che annidavo oggetti dentro altri oggetti"?...solo per curiosità.
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline Agosteeno

  • Utente normale
  • ***
  • Post: 152
  • Respect: +2
    • Mostra profilo
  • Dispositivo Android:
    Sony Ericsson - Xperia Neo
  • Sistema operativo:
    Ubuntu 11.04
Re:Problema JSONArray
« Risposta #4 il: 23 Marzo 2011, 16:29:56 CET »
0
Ci provo, il problema e' che era la prima volta che usavo JSON e quindi ho avuto un approccio abbastanza confuso. Comunque, quello che avevo fatto era creare un JSONObject, che aveva, oltre ad alcuni campi interi e stringa, alcuni array di oggetti JSON creati da me (invece di JSONArray). Per intenderci:

JSONObj1
{ int primo; String secondo; JSONObj2 [] terzo}

dove JSONObj2 era una cosa del genere: {String campo}

Quindi in pratica avevo un array di oggetti JSON, rendendo il modo per inserire i vari campi e la loro estrazione molto macchinosa.
In ogni caso con java riuscivo ad estrarre questi "sotto-oggetti", con Android si rifiutava.

Ora naturalmente ho messo in maniera un JSONArray scritto in questo modo:
JSONObj1
{int primo, String secondo, JSONArray terzo}
Risparmia l'acqua, bevi birra...