Autore Topic: Parsing json di un array di array di stringhe  (Letto 477 volte)

Offline ValerioAdo

  • Utente normale
  • ***
  • Post: 319
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Huawei Ascend g525
  • Sistema operativo:
    windows 8.1
Parsing json di un array di array di stringhe
« il: 10 Giugno 2015, 12:04:40 CEST »
0
Salve a tutti!

Ho già fatto parsing json di array provenienti da un db online con successo ma ora mi trovo davanti ad un ostacolo non piccolo.... ho alcuni elementi che sono collegati a più di un'immagine, quindi nella sezione "immagine" hanno più di un file.... come faccio ad ottenere questi oggetti e ,di conseguenza, inserirli in un array di array di stringhe?

Spero di essere stato chiaro....

Grazie mille in anticipo!

Offline LinkOut

  • Utente normale
  • ***
  • Post: 271
  • Respect: +38
    • Mostra profilo
  • Dispositivo Android:
    Xiaomi Mi5
Re:Parsing json di un array di array di stringhe
« Risposta #1 il: 10 Giugno 2015, 12:27:55 CEST »
0
Potresti postare un esempio ?

Grazie.

Offline ValerioAdo

  • Utente normale
  • ***
  • Post: 319
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Huawei Ascend g525
  • Sistema operativo:
    windows 8.1
Re:Parsing json di un array di array di stringhe
« Risposta #2 il: 10 Giugno 2015, 15:27:30 CEST »
0
Potresti postare un esempio ?

Grazie.

certo!

ad esempio una cosa del genere :
Codice: [Seleziona]
{"ID":"92","ItemName":"Anello escursionistico di Albareto","ItemDescription":""Anello C: L\u2019anello escursionistico percorre il territorio agricolo situato ad ovest del capoluogo comunale, sviluppandosi complessivamente per circa 5 Km e superando un dislivello di un centinaio di metri. Nella sua estremita\u2019, presso il nucleo rurale di Albareto, il sentiero entra nell\u2019Area SIC (Sito di Importanza Comunitaria) del Rio Dorgola, l\u2019unico attualmente presente nel territorio comunale. Percorso panoramico, con vista sulla valle del Tresinaro, delimitato dalle cupole arenacee di Marola e della dorsale del monte Valestra.\r\nTestimonianza di antiche, rustiche costruzioni, nelle borgate di Immovilla e Collina."","Address":" ","Phone":" ","Website":"","Mail":"","Facebook":"","Latitude":"44.495866","Longitude":"10.599651","Resources":[{"ResourcePath":"http:\/\/www.thebubblecompany.com\/comuni\/Baiso\/uploads\/","ResourceName":"5anelloc.jpg","ResourceType":"jpg"},{"ResourcePath":"http:\/\/www.thebubblecompany.com\/comuni\/Baiso\/uploads\/","ResourceName":"bottomImage_5anelloc.jpg","ResourceType":"jpg"}]}
dove appunto la parte relativa alle immagini è doppia:

Codice: [Seleziona]
Resources":[{"ResourcePath":"http:\/\/www.thebubblecompany.com\/comuni\/Baiso\/uploads\/","ResourceName":"5anelloc.jpg","ResourceType":"jpg"},{"ResourcePath":"http:\/\/www.thebubblecompany.com\/comuni\/Baiso\/uploads\/","ResourceName":"bottomImage_5anelloc.jpg","ResourceType":"jpg"}]

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Parsing json di un array di array di stringhe
« Risposta #3 il: 10 Giugno 2015, 15:48:52 CEST »
0
Nel fare il parsing di un file JSON si possono estrarre due tipologie di oggetti: JsonObject e JsonArray.
Se controlli le funzioni che stai usando, vedrai che le trovi.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline ValerioAdo

  • Utente normale
  • ***
  • Post: 319
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Huawei Ascend g525
  • Sistema operativo:
    windows 8.1
Re:Parsing json di un array di array di stringhe
« Risposta #4 il: 10 Giugno 2015, 16:05:38 CEST »
0
penso di aver capito....

al momento uso una cosa del genere per fare il parsing del json:
Codice (Java): [Seleziona]
 JSONArray jArrayResource = jobj.getJSONArray("ResourceName");
                        //JSONArray jArray = jobj.getJSONArray("ristorante");
                        Valori.dbItinerariName = new String[jArray.length()];
                        Valori.dbItinerariDesc = new String[jArray.length()];
                        Valori.dbItinerariDescEng = new String[jArray.length()];
                        Valori.dbItinerariNumber = new String[jArray.length()];
                        Valori.dbItinerariIndirizzo = new String[jArray.length()];
                        Valori.dbItinerariLat = new String[jArray.length()];
                        Valori.dbItinerariLong = new String[jArray.length()];
                        Valori.dbItinerariMail = new String[jArray.length()];
                        Valori.dbItinerariLink = new String[jArray.length()];
                        Valori.dbItinerariFace = new String[jArray.length()];
                        Valori.dbItinerariFoto = new String[jArray.length()];
                        Valori.dbItinerariNomeFoto=new String[jArray.length()];
                        //Valori.dbItinerariProva=new String[jArray.length()][jArray.length()];


                        for (int i = 0; i < jArray.length(); i++) {
                            JSONObject json_data = jArray.getJSONObject(i);

                            Valori.dbItinerariName[i] = json_data.getString("ItemName");
                            Valori.dbItinerariDesc[i] = json_data.getString("ItemDescription");
                            Valori.dbItinerariNumber[i] = json_data.getString("Phone");
                            Valori.dbItinerariIndirizzo[i] = json_data.getString("Address");
                            Valori.dbItinerariLat[i] = json_data.getString("Latitude");
                            Valori.dbItinerariLong[i] = json_data.getString("Longitude");
                            Valori.dbItinerariMail[i] = json_data.getString("Mail");
                            Valori.dbItinerariLink[i] = json_data.getString("Website");
                            Valori.dbItinerariFace[i] = json_data.getString("Facebook");
                            Valori.dbItinerariFoto[i] = json_data.getString("ResourcePath");
                            Valori.dbItinerariNomeFoto[i]=json_data.getString("ResourceName");
}

ora sto provando ad ottenere le "info multiple" aggiungendo questo metodo:

Codice (Java): [Seleziona]
 jArrayResource=new JSONArray(jArray.getJSONObject(i).getString("content"));
                            JSONObject json_data_resource=jArrayResource.getJSONObject(i);

                            for (int c=0;i<jArrayResource.length();c++){
                                Valori.dbItinerariProva[i][c]=json_data_resource.getString("ResourceName");

                            }

ora lo devo testare... ma non sono sicuro che vada benissimo.... in compenso sto seguendo questo esempio per farmi un'idea:
How to parse JSON Array inside another JSON Array in Android - Stack Overflow

Post unito: 10 Giugno 2015, 16:43:40 CEST
Ok ci sono quasi riuscito.... il codice che ho è questo:

Codice (Java): [Seleziona]
    JSONObject jobj = new JSONObject(result);
                        JSONArray jArray = jobj.getJSONArray("POI");
                       // JSONArray jArrayResource = jobj.getJSONArray("Resources");
                        //JSONArray jArray = jobj.getJSONArray("ristorante");
                        Valori.dbItinerariName = new String[jArray.length()];
                        Valori.dbItinerariDesc = new String[jArray.length()];
                        Valori.dbItinerariDescEng = new String[jArray.length()];
                        Valori.dbItinerariNumber = new String[jArray.length()];
                        Valori.dbItinerariIndirizzo = new String[jArray.length()];
                        Valori.dbItinerariLat = new String[jArray.length()];
                        Valori.dbItinerariLong = new String[jArray.length()];
                        Valori.dbItinerariMail = new String[jArray.length()];
                        Valori.dbItinerariLink = new String[jArray.length()];
                        Valori.dbItinerariFace = new String[jArray.length()];
                        Valori.dbItinerariFoto = new String[jArray.length()];
                        Valori.dbItinerariNomeFoto=new String[jArray.length()];

                        Valori.dbItinerariProva=new String[jArray.length()][];





                        for (int i = 0; i < jArray.length(); i++) {
                            JSONObject json_data = jArray.getJSONObject(i);

                            JSONArray jArrayResource=new JSONArray(jArray.getJSONObject(i).getString("Resources"));
                            JSONObject json_data_resource=jArrayResource.getJSONObject(i);
                            Valori.dbItinerariProva=new String [i] [jArrayResource.length()];


                            Valori.dbItinerariName[i] = json_data.getString("ItemName");
                            Valori.dbItinerariDesc[i] = json_data.getString("ItemDescription");
                            Valori.dbItinerariNumber[i] = json_data.getString("Phone");
                            Valori.dbItinerariIndirizzo[i] = json_data.getString("Address");
                            Valori.dbItinerariLat[i] = json_data.getString("Latitude");
                            Valori.dbItinerariLong[i] = json_data.getString("Longitude");
                            Valori.dbItinerariMail[i] = json_data.getString("Mail");
                            Valori.dbItinerariLink[i] = json_data.getString("Website");
                            Valori.dbItinerariFace[i] = json_data.getString("Facebook");
                           // Valori.dbItinerariFoto[i] = json_data.getString("ResourcePath");
                           // Valori.dbItinerariNomeFoto[i]=json_data.getString("ResourceName");



                            for (int c=0;i<jArrayResource.length();c++){


                                Valori.dbItinerariProva[i][c]=json_data_resource.getString("ResourceName");

                            }




                        }

Però mi sono scontrato con un piccolo sassolino sul percorso.... la dichiarazione della lunghezza di Valori.dbItinerariProva.... il primo valore è il numero di oggetti json che ho ottenuto, il secondo è quello delle immagini che ogni oggetto ha , che può variare da 1 a n. Però io non so in anticipo (fino a che non entro nel for) quante immagini ha quell'oggetto.

Mi trovo in difficoltà con questa dichiarazione, ho visto che posso dichiarare fuori dal for la "prima lunghezza" ma non la "seconda lunghezza".


Avete suggerimento?
« Ultima modifica: 10 Giugno 2015, 16:43:40 CEST da ValerioAdo, Reason: Merged DoublePost »