2015-05-22 11 views
7

Ich poste einige Daten in die Datenbank mit Volley und ich bekomme die folgende jsonarray Antwort.JSONArray Antwort mit Volley für Android

[ 
    { 
    "nickname":"panikos", 
    "username":"[email protected]", 
    "user_type":"LEADER", 
    "latest_steps":"0" 
    } 
] 

Dies ist ein Beispiel meiner Code, der leider nicht oder debuggen die Variable „Spitznamen“ Objekt :(nicht abzumelden.

final JsonArrayRequest jsonObjReq1 = new 
JsonArrayRequest(AppConfig.URL_GET_TEAM, jsonObject, 
      new com.android.volley.Response.Listener<JSONArray>() { 

       @Override 
       public void onResponse(JSONArray response) { 
        Log.d("TAG", response.toString()); 

        try { 
         JSONArray jsonArray = new JSONArray(response); 

         for(int i=0;i<jsonArray.length();i++){ 
          JSONObject jresponse = 
       jsonArray.getJSONObject(i); 
       String nickname =         
      jresponse.getString("nickname"); 
          Log.d("nickname",nickname); 
         } 
        } catch (JSONException e) { 
         e.printStackTrace(); 
        } 
        //pDialog.dismiss(); 

       } 
      }, new com.android.volley.Response.ErrorListener() { 

     @Override 
     public void onErrorResponse(VolleyError error) { 
      VolleyLog.d("TAG", "Error: " + error.getMessage()); 
      //pDialog.dismiss(); 

     } 
    }) { 

     @Override 
     public String getBodyContentType() { 
      return "application/json; charset=utf-8"; 
     } 


    }; 

Irgendwelche Ideen? Bin ich etwas fehlt?

Dank

+1

der Code scheint in Ordnung. fügen Sie 'jsonObjReq1' hinzu, um eine Warteschlange anzufordern? –

Antwort

8

ich könnte das Problem sein -. Sie bekommen schon response als JSONArray

.

So können Sie

JSONObject jresponse = response.getJSONObject(0);

Rufen Sie und wenn Sie mehr als 1 Objekt in Antwort haben, dann

for(int i = 0; i < response.length(); i++){ 
    JSONObject jresponse = response.getJSONObject(i); 
    String nickname = jresponse.getString("nickname"); 
    Log.d("nickname", nickname); 
} 

diese entfernen:

   try { 
        JSONArray jsonArray = new JSONArray(response); 

        for(int i=0;i<jsonArray.length();i++){ 
         JSONObject jresponse = 
      jsonArray.getJSONObject(i); 
      String nickname =         
     jresponse.getString("nickname"); 
         Log.d("nickname",nickname); 
        } 
       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 

und fügen:

try { 
    JSONObject jresponse = response.getJSONObject(0); 
    String nickname = jresponse.getString("nickname"); 
    Log.d("nickname",nickname); 
}catch (JSONException e) { 
    e.printStackTrace(); 
} 

Der Code sieht gut aus, aber ich denke, dass Sie einen Anruf verpassen, um jsonObjReq1 in der Anforderungswarteschlange hinzuzufügen. Ich würde vorschlagen, Singleton Pattern zu verwenden.

+0

Danke für die Antwort. Ja, jsonObjReq1 befindet sich in der Warteschlange. – Theo

+0

AppController.getInstance(). AddToRequestQueue (jsonObjReq1, tag_json_obj); – Theo

+0

Aber ich weiß nicht was falsch ist und kann das Nickname-Objekt nicht lesen. Es ist so nervig! – Theo

1

Fixed !!!

   @Override 
       public void onResponse(JSONArray response) { 
        Log.d("TAG", response.toString()); 

        try { 

         Log.d("JsonArray",response.toString()); 
         for(int i=0;i<response.length();i++){ 
          JSONObject jresponse = response.getJSONObject(i); 
          String nickname = jresponse.getString("nickname"); 
          Log.d("nickname",nickname); 
         } 
        } catch (JSONException e) { 
         e.printStackTrace(); 
        } 
        //pDialog.dismiss(); 

       } 

Es war nicht notwendig, ein neues JSONArray zu erstellen. Es wurde in der onResponse() -Methode erstellt. Das nächste Projekt, mit dem ich beauftragt bin, wird webservices.omg komplizierter machen !!!

+1

Sie müssen nicht und Ihre eigene Frage .. Bitte akzeptieren Sie meine und wenn es hilfreich war –

+0

Hey, ich bekomme 'kann getJSONObject (int)' nicht auflösen. Irgendwelche Ideen? – impossible

Verwandte Themen