2015-05-22 5 views
7

मैं वॉली का उपयोग करके डेटाबेस में कुछ डेटा पोस्ट कर रहा हूं और मुझे निम्न jsonarray प्रतिक्रिया मिलती है।एंड्रॉइड के लिए वॉली के साथ JSONArray प्रतिक्रिया

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

यह मेरा कोड का एक नमूना है कि दुर्भाग्य से लॉग आउट नहीं करता है या "उपनाम" वस्तु :(की चर डिबग है।

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"; 
     } 


    }; 

कोई भी विचार? मैं कुछ याद आ रही है?

धन्यवाद

+1

कोड ठीक लगता है। क्या आप कतार का अनुरोध करने के लिए 'jsonObjReq1' जोड़ रहे हैं? –

उत्तर

8

मैं समस्या हो सकती है -। आप पहले से ही एक JSONArray रूप response हो रही है

तो, आप

JSONObject jresponse = response.getJSONObject(0);

कॉल कर सकते हैं और अगर आप जवाब में 1 से अधिक वस्तु है, तो है

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

इस निकालें:

   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(); 
       } 

और जोड़ें:

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

कोड अच्छा दिखता है, हालांकि मुझे लगता है कि आप अनुरोध कतार में jsonObjReq1 जोड़ने के लिए एक कॉल खो रहे हैं। मैं Singleton Pattern का उपयोग करने का सुझाव दूंगा।

+0

उत्तर के लिए धन्यवाद। हां jsonObjReq1 कतार में है। – Theo

+0

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

+0

लेकिन मैं गलत नहीं करता और उपनाम वस्तु नहीं पढ़ सकता। इसपे इतना गुस्सा आ रहा है! – Theo

1

फिक्स्ड !!!

   @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(); 

       } 

नया JSONArray बनाने की कोई आवश्यकता नहीं थी। यह onResponse() विधि के अंदर बनाया गया था। अगली परियोजना जिसे मैं करने के लिए सौंपा गया है, अधिक जटिल webservices.omg होने जा रहा है !!!

+1

आपको और अपना खुद का प्रश्न नहीं है .. कृपया मुझे स्वीकार करें और यदि यह उपयोगी था –

+0

अरे, मैं getJSONObject (int) को हल नहीं कर रहा हूं। कोई अंदाज़ा? – impossible

संबंधित मुद्दे