Autore Topic: android gestione dati json  (Letto 1736 volte)

Offline gbu123

  • Utente junior
  • **
  • Post: 74
  • Respect: +2
    • Mostra profilo
  • Sistema operativo:
    windows 7
android gestione dati json
« il: 17 Gennaio 2013, 11:07:25 CET »
0
ciao
non riesco a risolvere il seguente problema :

-ricevo dal server i seguenti dati dati :
Codice: [Seleziona]
{"EntityName":"EsercizioEntity","IdEsercizio":{"Name":"ID_ESERCIZIO","Value":7},"IdCliente":{"Name":"CLIENTE_ID","Value":1},"Insegna":{"Name":"INSEGNA","Value":"Albergo Garni Aurora"},"Indirizzo":{"Name":"INDIRIZZO","Value":"Via di Trieste 15"},"Localita":{"Name":"LOCALITA","Value":"Duino"},"IdComune":{"Name":"COMUNE_ID","Value":2617},"Telefono":{"Name":"TELEFONO","Value":""},"Fax":{"Name":"FAX","Value":""},"Email":{"Name":"EMAIL","Value":""},"Referente":{"Name":"REFERENTE","Value":""},"TelefonoMobile":{"Name":"MOBILE","Value":""},"Latitudine":{"Name":"LAT","Value":""},"Longitudine":{"Name":"LONG","Value":""},"Logo":{"Name":"LOGO","Value":"default.png"},"Descrizione":{"Name":"DESCR_ESERCIZIO","Value":""},"Image1":{"Name":"IMG_1","Value":""},"Image2":{"Name":"IMG_2","Value":""},"Image3":{"Name":"IMG_3","Value":""},"Image4":{"Name":"IMG_4","Value":""},"OrarioLunedi":{"Name":"ORA_LUNEDI","Value":""},"OrarioMartedi":{"Name":"ORA_MARTEDI","Value":""},"OrarioMercoledi":{"Name":"ORA_MERCOLEDI","Value":""},"OrarioGiovedi":{"Name":"ORA_GIOVEDI","Value":""},"OrarioVenerdi":{"Name":"ORA_VENERDI","Value":""},"OrarioSabato":{"Name":"ORA_SABATO","Value":""},"OrarioDomenica":{"Name":"ORA_DOMENICA","Value":""},"Entities":{"CategoriaEntity":[{"EntityName":"CategoriaEntity","IdCategoria":{"Name":"ID_CATEGORIA","Value":13},"IdCategoriaPadre":{"Name":"CATEGORIA_PADRE_ID","Value":12},"Categoria":{"Name":"DESCR_CATEGORIA","Value":"Alberghi"},"Entities":{}},{"EntityName":"CategoriaEntity","IdCategoria":{"Name":"ID_CATEGORIA","Value":7},"IdCategoriaPadre":{"Name":"CATEGORIA_PADRE_ID","Value":5},"Categoria":{"Name":"DESCR_CATEGORIA","Value":"Ristoranti"},"Entities":{}}],"BrandEntity":[],"ClienteEntity":{"EntityName":"ClienteEntity","IdCliente":{"Name":"ID_CLIENTE","Value":0},"RagioneSociale":{"Name":"RAGIONE_SOCIALE","Value":"Metide srl"},"Indirizzo":{"Name":"CLI_INDIRIZZO","Value":""},"Localita":{"Name":"CLI_LOCALITA","Value":""},"IdComune":{"Name":"CLI_COMUNE_ID","Value":0},"Telefono":{"Name":"CLI_TELEFONO","Value":""},"Fax":{"Name":"CLI_FAX","Value":""},"Email":{"Name":"CLI_EMAIL","Value":""},"Referente":{"Name":"CLI_REFERENTE","Value":""},"TelefonoMobile":{"Name":"CLI_MOBILE","Value":""},"PartitaIva":{"Name":"PIVA","Value":""},"Entities":{}},"ComuneEntity":{"EntityName":"ComuneEntity","IdComune":{"Name":"ID_COMUNE","Value":0},"Comune":{"Name":"COMUNE","Value":"Duino-Aurisina"},"ProvSigla":{"Name":"PROV_SIGLA","Value":"TS"},"Provincia":{"Name":"PROVINCIA","Value":"TRIESTE"},"RegioneSigla":{"Name":"REGIONE_SIGLA","Value":"FVG"},"Regione":{"Name":"REGIONE","Value":"FRIULI VNEZIA GIULIA"},"Entities":{}}}},{"EntityName":"EsercizioEntity","IdEsercizio":{"Name":"ID_ESERCIZIO","Value":8},"IdCliente":{"Name":"CLIENTE_ID","Value":1},"Insegna":{"Name":"INSEGNA","Value":"Bed and Breakfast Prestau"},"Indirizzo":{"Name":"INDIRIZZO","Value":"Via dell\u0027Ospitale  10"},"Localita":{"Name":"LOCALITA","Value":"Gorizia"},"IdComune":{"Name":"COMUNE_ID","Value":3194},"Telefono":{"Name":"TELEFONO","Value":""},"Fax":{"Name":"FAX","Value":""},"Email":{"Name":"EMAIL","Value":""},"Referente":{"Name":"REFERENTE","Value":""},"TelefonoMobile":{"Name":"MOBILE","Value":""},"Latitudine":{"Name":"LAT","Value":""},"Longitudine":{"Name":"LONG","Value":""},"Logo":{"Name":"LOGO","Value":""},"Descrizione":{"Name":"DESCR_ESERCIZIO","Value":""},"Image1":{"Name":"IMG_1","Value":""},"Image2":{"Name":"IMG_2","Value":""},"Image3":{"Name":"IMG_3","Value":""},"Image4":{"Name":"IMG_4","Value":""},"OrarioLunedi":{"Name":"ORA_LUNEDI","Value":""},"OrarioMartedi":{"Name":"ORA_MARTEDI","Value":""},"OrarioMercoledi":{"Name":"ORA_MERCOLEDI","Value":""},"OrarioGiovedi":{"Name":"ORA_GIOVEDI","Value":""},"OrarioVenerdi":{"Name":"ORA_VENERDI","Value":""},"OrarioSabato":{"Name":"ORA_SABATO","Value":""},"OrarioDomenica":{"Name":"ORA_DOMENICA","Value":""},"Entities":{"CategoriaEntity":[{"EntityName":"CategoriaEntity","IdCategoria":{"Name":"ID_CATEGORIA","Value":7},"IdCategoriaPadre":{"Name":"CATEGORIA_PADRE_ID","Value":5},"Categoria":{"Name":"DESCR_CATEGORIA","Value":"Ristoranti"},"Entities":{}}],"BrandEntity":[],"ClienteEntity":{"EntityName":"ClienteEntity","IdCliente":{"Name":"ID_CLIENTE","Value":0},"RagioneSociale":{"Name":"RAGIONE_SOCIALE","Value":"Metide srl"},"Indirizzo":{"Name":"CLI_INDIRIZZO","Value":""},"Localita":{"Name":"CLI_LOCALITA","Value":""},"IdComune":{"Name":"CLI_COMUNE_ID","Value":0},"Telefono":{"Name":"CLI_TELEFONO","Value":""},"Fax":{"Name":"CLI_FAX","Value":""},"Email":{"Name":"CLI_EMAIL","Value":""},"Referente":{"Name":"CLI_REFERENTE","Value":""},"TelefonoMobile":. . .


quindi si tratta di un array di oggetti o sbaglio ? ;
ora devo prendere il singolo oggetto e prelevare i singoli campi , quindi faccio :

Codice: [Seleziona]
String json = jsparser.getEsercizi(url, nameValuePairs); //parametri selezione

JSONObject arr = new JSONObject(json);
for (int i = 0; i < arr.length(); i++) {
        JSONObject obj = arr.getJSONObject(i);
       //prendo i campi di obj che mi interessano



non capisco come fare a prendere l'oggetto i-mo da arr , facendo come sopra mi da
errore : The method getJSONObject(String) in the type JSONObject is not applicable for the arguments (int)

sto guardando su internet ma senza concludere ,
per favore potete aiutarmi?
grazie mille

ciao

[/code]

Offline agenio

  • Utente junior
  • **
  • Post: 77
  • Respect: +11
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    Moto G
  • Sistema operativo:
    Windows 8.1
Re:android gestione dati json
« Risposta #1 il: 17 Gennaio 2013, 11:29:03 CET »
0
Prova a cambiare:
Codice (Java): [Seleziona]
JSONObject arr = new JSONObject(json);
in:
Codice (Java): [Seleziona]
JSONArray arr = new JSONArray(json);
poi cmq c'è un errore nella stringa json che ti arriva perchè dovrebbe essere:
Codice (XML): [Seleziona]
[{},{}]
a te mancano le due parentesi quadre alle estremità

Offline gbu123

  • Utente junior
  • **
  • Post: 74
  • Respect: +2
    • Mostra profilo
  • Sistema operativo:
    windows 7
Re:android gestione dati json
« Risposta #2 il: 17 Gennaio 2013, 11:38:07 CET »
0
ciao
grazie della risposta; in effetti potrei aggiungere io le parentesi quadre alla stringa che mi arriva, l'ho fatto

Codice: [Seleziona]
json = "[" + json + "]";
JSONArray arr =  new JSONArray(json);


ma non funziona perchè l'array che trovo su arr dopo ha i dati tutti sconclusionati , es. :

Codice: [Seleziona]
[{"OrarioMercoledi":{"Name":"ORA_MERCOLEDI","Value":""},"Entities":{"ClienteEntity":{"Localita":{"Name":"CLI_LOCALITA","Value":""},"IdCliente":{"Name":"ID_CLIENTE","Value":0},"Entities":{},"PartitaIva":{"Name":"PIVA","Value":""},"Email":{"Name":"CLI_EMAIL","Value":""},"Referente":{"Name":"CLI_REFERENTE","Value":""},"Telefono":{"Name":"CLI_TELEFONO","Value":""},"IdComune":{"Name":"CLI_COMUNE_ID","Value":0},"Fax":{"Name":"CLI_FAX","Value":""},"RagioneSociale":{"Name":"RAGIONE_SOCIALE","Value":"Metide srl"},"EntityName":"ClienteEntity","TelefonoMobile":{"Name":"CLI_MOBILE","Value":""},"Indirizzo":{"Name":"CLI_INDIRIZZO","Value":""}},"BrandEntity":[],"CategoriaEntity":[{"EntityName":"CategoriaEntity","Entities":{},"IdCategoriaPadre":{"Name":"CATEGORIA_PADRE_ID","Value":12},"IdCategoria":{"Name":"ID_CATEGORIA","Value":13},"Categoria":{"Name":"DESCR_CATEGORIA","Value":"Alberghi"}},{"EntityName":"CategoriaEntity","Entities":{},"IdCategoriaPadre":{"Name":"CATEGORIA_PADRE_ID","Value":5},"IdCategoria":{"Name":"ID_CATEGORIA","Value":7},"Categoria":{"Name":"DESCR_CATEGORIA","Value":"Ristoranti"}}],"ComuneEntity":{"ProvSigla":{"Name":"PROV_SIGLA","Value":"TS"},"Entities":{},"Regione":{"Name":"REGIONE","Value":"FRIULI VNEZIA GIULIA"},"IdComune":{"Name":"ID_COMUNE","Value":0},"RegioneSigla":{"Name":"REGIONE_SIGLA","Value":"FVG"},"EntityName":"ComuneEntity","Comune":{"Name":"COMUNE","Value":"Duino-Aurisina"},"Provincia":{"Name":"PROVINCIA","Value":"TRIESTE"}}},"IdEsercizio":{"Name":"ID_ESERCIZIO","Value":7},"Logo":{"Name":"LOGO","Value":"default.png"},"Telefono":{"Name":"TELEFONO","Value":""},"OrarioMartedi":{"Name":"ORA_MARTEDI","Value":""},"Image3":{"Name":"IMG_3","Value":""},"IdComune":{"Name":"COMUNE_ID","Value":2617},"Image4":{"Name":"IMG_4","Value":""},"Image1":{"Name":"IMG_1","Value":""},"Latitudine":{"Name":"LAT","Value":""},"Image2":{"Name":"IMG_2","Value":""},"EntityName":"EsercizioEntity","Longitudine":{"Name":"LONG","Value":""},"IdCliente":{"Name":"CLIENTE_ID","Value":1},"OrarioDomenica":{"Name":"ORA_DOMENICA","Value":""},"Indirizzo":{"Name":"INDIRIZZO","Value":"Via di Trieste 15"},"Insegna":{"Name":"INSEGNA","Value":"Albergo Garni Aurora"},"OrarioLunedi":{"Name":"ORA_LUNEDI","Value":""},"Descrizione":{"Name":"DESCR_ESERCIZIO","Value":""},"Fax":{"Name":"FAX","Value":""},"OrarioVenerdi":{"Name":"ORA_VENERDI","Value":""},"TelefonoMobile":{"Name":"MOBILE","Value":""},"Localita":{"Name":"LOCALITA","Value":"Duino"},"Email":{"Name":"EMAIL","Value":""},"Referente":{"Name":"REFERENTE","Value":""},"OrarioSabato":{"Name":"ORA_SABATO","Value":""},"OrarioGiovedi":{"Name":"ORA_GIOVEDI","Value":""}},{"OrarioMercoledi":
. . . .

allora volevo usare un array di oggetti :

Codice: [Seleziona]
JSONObject arrObj = new JSONObject(json);
. . . .

solo che non riesco ad indirizzare un oggetto di arrObj (oggetti)

sapresti come fare ?
grazie

ciao

Offline agenio

  • Utente junior
  • **
  • Post: 77
  • Respect: +11
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    Moto G
  • Sistema operativo:
    Windows 8.1
Re:android gestione dati json
« Risposta #3 il: 17 Gennaio 2013, 11:46:21 CET »
0
Aspetta tu avendo una stringa del genere:
Codice (XML): [Seleziona]
[{},{}]
dovresti ritrovarti con un array di oggetti, quindi (mi sembra di aver sempre fatto così) dovresti cavartela con un:
Codice (Java): [Seleziona]
JSONArray arr = new JSONArray(jsonString);
      for (int i = 0; i < jsonArray.length(); i++) {
        JSONObject jsonObject = arr.getJSONObject(i);
      }

ora non capisco la storia dei dati incasinati, alla fine tutto quello che hai all'interno di {} sono tutti parametri di un ogetto. Tali parametri possono essere altri oggetti, array, stringhe, interi e chi più ne ha più ne metta:)

EDIT: Logicamente il codice che ho postato non ha alcun senso logico, in quanto ti ritroveresti con solo l'ultimo JsonObject, quindi dopo aver creato l'oggetto salvalo all'interno di un array o di una lista
« Ultima modifica: 17 Gennaio 2013, 11:48:07 CET da agenio »

Offline gbu123

  • Utente junior
  • **
  • Post: 74
  • Respect: +2
    • Mostra profilo
  • Sistema operativo:
    windows 7
Re:android gestione dati json
« Risposta #4 il: 17 Gennaio 2013, 12:23:01 CET »
0
ciao
scusa ancora se ti disturbo , ho fatto le seguenti operazioni :

1-ho aggiunto le parentesi quadre alla stringa json ed ho preparato l'array :
Codice: [Seleziona]
json = "[" + json + "]";
JSONArray arr1 =  new JSONArray(json);

2-ho fatti il loop sulla stringa arr1 :
Codice: [Seleziona]
for (int i = 0; i < arr1.length(); i++) {
        JSONObject eleobj = (JSONObject) arr1.get(i);
        . . . . .

ma quello che vedo in eleobj non ha tutti i dati che mi aspetto , ha invece la stringa che ti
avevo mostrato sopra , cioè :

Codice: [Seleziona]
{"OrarioMercoledi":{"Name":"ORA_MERCOLEDI","Value":""},"Entities":{"ClienteEntity":{"Localita":{"Name":"CLI_LOCALITA","Value":""},"IdCliente":{"Name":"ID_CLIENTE","Value":0},"Entities":{},"PartitaIva":{"Name":"PIVA","Value":""},"Email":{"Name":"CLI_EMAIL","Value":""},"Referente":{"Name":"CLI_REFERENTE","Value":""},"Telefono":{"Name":"CLI_TELEFONO","Value":""},"IdComune":{"Name":"CLI_COMUNE_ID","Value":0},"Fax":{"Name":"CLI_FAX","Value":""},"RagioneSociale":{"Name":"RAGIONE_SOCIALE","Value":"Metide srl"},"EntityName":"ClienteEntity","TelefonoMobile":{"Name":"CLI_MOBILE","Value":""},"Indirizzo":{"Name":"CLI_INDIRIZZO","Value":""}},"BrandEntity":[],"CategoriaEntity":[{"EntityName":"CategoriaEntity","Entities":{},"IdCategoriaPadre":{"Name":"CATEGORIA_PADRE_ID","Value":12},"IdCategoria":{"Name":"ID_CATEGORIA","Value":13},"Categoria":{"Name":"DESCR_CATEGORIA","Value":"Alberghi"}},{"EntityName":"CategoriaEntity","Entities":{},"IdCategoriaPadre":{"Name":"CATEGORIA_PADRE_ID","Value":5},"IdCategoria":{"Name":"ID_CATEGORIA","Value":7},"Categoria":{"Name":"DESCR_CATEGORIA","Value":"Ristoranti"}}],"ComuneEntity":{"ProvSigla":{"Name":"PROV_SIGLA","Value":"TS"},"Entities":{},"Regione":{"Name":"REGIONE","Value":"FRIULI VNEZIA GIULIA"},"IdComune":{"Name":"ID_COMUNE","Value":0},"RegioneSigla":{"Name":"REGIONE_SIGLA","Value":"FVG"},"EntityName":"ComuneEntity","Comune":{"Name":"COMUNE","Value":"Duino-Aurisina"},"Provincia":{"Name":"PROVINCIA","Value":"TRIESTE"}}},"IdEsercizio":{"Name":"ID_ESERCIZIO","Value":7},"Logo":{"Name":"LOGO","Value":"default.png"},"Telefono":{"Name":"TELEFONO","Value":""},"OrarioMartedi":{"Name":"ORA_MARTEDI","Value":""},"Image3":{"Name":"IMG_3","Value":""},"IdComune":{"Name":"COMUNE_ID","Value":2617},"Image4":{"Name":"IMG_4","Value":""},"Image1":{"Name":"IMG_1","Value":""},"Latitudine":{"Name":"LAT","Value":""},"Image2":{"Name":"IMG_2","Value":""},"EntityName":"EsercizioEntity","Longitudine":{"Name":"LONG","Value":""},"IdCliente":{"Name":"CLIENTE_ID","Value":1},"OrarioDomenica":{"Name":"ORA_DOMENICA","Value":""},"Indirizzo":{"Name":"INDIRIZZO","Value":"Via di Trieste 15"},"Insegna":{"Name":"INSEGNA","Value":"Albergo Garni Aurora"},"OrarioLunedi":{"Name":"ORA_LUNEDI","Value":""},"Descrizione":{"Name":"DESCR_ESERCIZIO","Value":""},"Fax":{"Name":"FAX","Value":""},"OrarioVenerdi":{"Name":"ORA_VENERDI","Value":""},"TelefonoMobile":{"Name":"MOBILE","Value":""},"Localita":{"Name":"LOCALITA","Value":"Duino"},"Email":{"Name":"EMAIL","Value":""},"Referente":{"Name":"REFERENTE","Value":""},"OrarioSabato":{"Name":"ORA_SABATO","Value":""},"OrarioGiovedi":{"Name":"ORA_GIOVEDI","Value":""}}
 

perchè ?

scusa ancora , ciao

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:android gestione dati json
« Risposta #5 il: 17 Gennaio 2013, 12:31:14 CET »
0
A me sembra un JsonObject gigante. Potresti postarlo tutto intero? :)

Offline gbu123

  • Utente junior
  • **
  • Post: 74
  • Respect: +2
    • Mostra profilo
  • Sistema operativo:
    windows 7
Re:android gestione dati json
« Risposta #6 il: 17 Gennaio 2013, 12:35:06 CET »
0
intendi tutti i dati restituiti dal server ?

Offline agenio

  • Utente junior
  • **
  • Post: 77
  • Respect: +11
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    Moto G
  • Sistema operativo:
    Windows 8.1
Re:android gestione dati json
« Risposta #7 il: 17 Gennaio 2013, 12:36:55 CET »
0
Ho provato a mandarlo a capo ad ogni virgola ma mi sono fermato:)

Comunque è molto incasinato e "poco performante" un json del genere, molte di queste diciture tipo:

Codice (XML): [Seleziona]
"IdComune":{"Name":"COMUNE_ID","Value":2617}
potrebbero benissimo essere trasformate in:
Codice (XML): [Seleziona]
"IdComune":2617
EDIT: fai una bella pulizia al json poi vedrai che sarà un attimo parsarlo

Offline gbu123

  • Utente junior
  • **
  • Post: 74
  • Respect: +2
    • Mostra profilo
  • Sistema operativo:
    windows 7
Re:android gestione dati json
« Risposta #8 il: 17 Gennaio 2013, 12:42:38 CET »
0
ciao
mi sembra sia una modifica da fare lato server , in tal caso il problema è che non ho accesso a questo

come posso fare ?
grazie, ciao

Offline agenio

  • Utente junior
  • **
  • Post: 77
  • Respect: +11
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    Moto G
  • Sistema operativo:
    Windows 8.1
Re:android gestione dati json
« Risposta #9 il: 17 Gennaio 2013, 12:49:15 CET »
0
e allora son cavoli amari:) ... comunque è molto strano che la mia soluzione ti "rovini" i dati.

Quello che dici tu invece, il discorso di array di oggetti ... alla fine è la mia soluzione, perchè con JSONArray non fai altro che creare un array, contenente qualsiasi cosa, mentre con JSONObject estrai solo un elemento che poi al suo interno può contenere mille altre cose.

Offline gbu123

  • Utente junior
  • **
  • Post: 74
  • Respect: +2
    • Mostra profilo
  • Sistema operativo:
    windows 7
Re:android gestione dati json
« Risposta #10 il: 17 Gennaio 2013, 12:52:54 CET »
0
infatti
però purtroppo non funziona ..

Offline agenio

  • Utente junior
  • **
  • Post: 77
  • Respect: +11
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    Moto G
  • Sistema operativo:
    Windows 8.1
Re:android gestione dati json
« Risposta #11 il: 17 Gennaio 2013, 12:59:59 CET »
0
potresti provare ad utilizzare una libreria diversa: esempio GSON https://sites.google.com/site/gson/gson-user-guide

Ovviamente è tutta un'altra cosa da quella standard java ... dovrai prima di tutto crearti delle classi che corrispondano agli oggetti descritti nel json, tanto prima o poi avresti dovuto farlo.

EDIT: ci sarebbe anche Jackson come libreria, ecco la wiki http://wiki.fasterxml.com/JacksonInFiveMinutes ... guardati il primo esempio che trovi scorrendo la pagina
« Ultima modifica: 17 Gennaio 2013, 13:13:09 CET da agenio »

Offline gbu123

  • Utente junior
  • **
  • Post: 74
  • Respect: +2
    • Mostra profilo
  • Sistema operativo:
    windows 7
Re:android gestione dati json
« Risposta #12 il: 17 Gennaio 2013, 13:55:09 CET »
0
allora fatemi gli auguri ...
ciao