2015-09-24 85 views
1

這是我無法解析的json響應。請幫我解析這個迴應。在android中解析json時出錯

{ 「狀態」: 「真」, 「數據」:{ 「用戶信息」: { 「ID」: 「77」, 「名字」: 「測試」, 「姓氏「: 」「 } ] }}

這是我的Android代碼。

protected Void doInBackground(Void... params) { 

ServiceHandler2 sh = new ServiceHandler2(); 

String url="http://192.168.0.65/hostandguest/android/viewprofile?uid=77"; 

String jsonStr = sh.makeServiceCall(url, ServiceHandler2.GET); 

Log.d("Response: ", "> " + jsonStr); 

    if (jsonStr != null) { 

    try { 

     JSONObject jsonObj = new JSONObject(jsonStr); 
     String status = jsonObj.getString("status"); 

      if (status.equalsIgnoreCase("true")) { 

      JSONArray Userarr=jsonObj.getJSONArray("userinfo"); 
      String data=jsonObj.getString("data"); 
      for(int i=0;i<Userarr.length();i++) 
       { 
       JSONObject c = Userarr.getJSONObject(i); 
       String Fname=c.getString("firstname"); 
       Fname_arr.add(Fname); 
       Log.v("Fname",Fname);     
       } 
      } 
      else { 
        Log.v("Status", "false"); 
       } 

      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
     } 

     return null; 
    } 
+0

它總是有用的發佈它返回的錯誤。 – Chris

+0

你有沒有收到任何迴應?如果是,那麼你可以檢查我的答案。它會爲你工作。 –

回答

1

獲取數據josnObject第一爲: -

JSONArray Userarr=jsonObj.getJsonObject("data").getJSONArray("userinfo"); 
+0

非常感謝2,讓我工作的人多嗎? – nanoweb

1

JSONArray Userarr=jsonObj.getJSONArray("userinfo");將需要jsonObj包含陣列 「用戶信息」。這不是你提出的情況。該數組位於名爲「data」的json子對象內。

 JSONObject jsonSubObj = jsonObj.getJSONObject("data"); 
     JSONArray Userarr=jsonSubObj.getJSONArray("userinfo"); 

應該是一個修復。我沒有檢查其他錯誤。

0

你得到第一userinfo對象,然後data後,這是錯的。

我改變了下面的方式,你必須做這件事情。

userinfo數據的子數組對象。

protected Void doInBackground(Void... params) { 

     ServiceHandler2 sh = new ServiceHandler2(); 

     String url = "http://192.168.0.65/hostandguest/android/viewprofile?uid=77"; 

     String jsonStr = sh.makeServiceCall(url, ServiceHandler2.GET); 

     Log.d("Response: ", "> " + jsonStr); 
     if (jsonStr != null) { 

      try { 

       JSONObject jsonObj = new JSONObject(jsonStr); 
       String status = jsonObj.getString("status"); 

       if (status.equalsIgnoreCase("true")) { 

        JSONObject dataObj = jsonObj.getJSONObject("data"); 
        JSONArray infoObj = dataObj.getJSONArray("userinfo"); 

        for (int i = 0; i < infoObj.length(); i++) { 
         JSONObject c = Userarr.getJSONObject(i); 
         String Fname = c.getString("firstname"); 
         Fname_arr.add(Fname); 
         Log.v("Fname", Fname); 
        } 
       } else { 
        Log.v("Status", "false"); 
       } 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
     } 
     return null; 
    }