Autore Topic: Convertire JSONArray in JSONObject  (Letto 365 volte)

Offline marco_88

  • Nuovo arrivato
  • *
  • Post: 39
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus 4
  • Sistema operativo:
    Kubuntu 13.10
Convertire JSONArray in JSONObject
« il: 29 Marzo 2014, 16:12:36 CET »
0
Ciao a tutti.

Sto cercando di modificare la mia applicazione che in precedenza usava un formato json differente perchè lo generavo con un file php standard per iniziare con delle prove.
Adesso sto generando l'output direttamente dal mio sito creato con cakePHP.

Perchè in effetti non ha senso riscrivere i file php per fargli restituire il json, se esistono già i controller che fanno tutto quello che mi serve.

Solo che cakephp mi genera l'output in maniera leggermente diversa e quindi se campio l'url con quello nuovo non funziona più l'applicazione dandomi il seguente errore:

Codice: [Seleziona]
E/JSON Parser﹕ Error parsing data org.json.JSONException: Value [{"User":{"id":1,"login":xxx,"password":"xxx"}}] of type org.json.JSONArray cannot be converted to JSONObject
Il codice è il seguente:

Codice: [Seleziona]
protected String doInBackground(String... args) {
            // Building Parameters
            List<NameValuePair> params = new ArrayList<NameValuePair>();
            // getting JSON string from URL
            JSONObject json = jParser.makeHttpRequest(url_all_users, "GET", params);

            // Check your log cat for JSON reponse
            Log.d("All User: ", json.toString());

            try {
                    users = json.getJSONArray(TAG_USERS);

                    // looping through All UsersFragment
                    for (int i = 0; i < users.length(); i++) {
                        JSONObject c = users.getJSONObject(i);

                        // Storing each json item in variable
                        String id = c.getString(TAG_PID);
                        String login = c.getString(TAG_LOGIN);
                        String full_name = c.getString(TAG_FULL_NAME);
                        String address = c.getString(TAG_ADDRESS);
                        String city = c.getString(TAG_CITY);
                        String province = c.getString(TAG_PROVINCE);
                        String zip = c.getString(TAG_ZIP);

                        // creating new HashMap
                        HashMap<String, String> map = new HashMap<String, String>();

                        // adding each child node to HashMap key => value
                        map.put(TAG_PID, id);
                        map.put(TAG_LOGIN, login);
                        map.put(TAG_FULL_NAME, full_name);
                        if(!(address.equals("null")))
                            map.put(TAG_ADDRESS, address);
                        if(!(city.equals("null")))
                            map.put(TAG_CITY, city);
                        if(!(province.equals("null")))
                            map.put(TAG_PROVINCE, province);
                        if(!(zip.equals("null")))
                            map.put(TAG_ZIP, zip);

                        // adding HashList to ArrayList
                        usersList.add(map);
                    }
            } catch (JSONException e) {
                e.printStackTrace();
            }

            return null;
        }

Prima il mio output JSON assomigliava a qualcosa di simile:

Codice: [Seleziona]
{"users":[{"id":"1","login":"xxx","password":"xxx"}],"success":1}
Mentre adesso è qualcosa del genere:

Codice: [Seleziona]
[{"User":{"id":"1","login":"xxx","password":"xxx"},"Group":{"id":"1","name":"xxx","level":"10"}}]
Ha delle leggere variazioni che ha fatto in modo che questo codice non funziona più e mi da l'errore sopracitato.

Come posso risolvere?

Marco
« Ultima modifica: 31 Marzo 2014, 00:09:35 CEST da marco_88 »