2015-02-07 32 views
0

將JSON ::Android的JSON解析前三價值

{ 「用戶信息」:[{ 「ID」: 「4」, 「名」: 「MD阿布·哈桑麥斯歐德」, 「電子郵件」:「abuhasanmasud @ gmail.com 「 」圖像「: 」54c0952d7c7500.607043061421907245.jpg「, 」imgLink「: 」http://dbtel.net/contactmanager/uploads/54c0952d7c7500.607043061421907245.jpg「, 」imgthumbLink「:」 HTTP:// dbtel.net/contactmanager/uploads/thumbs/54c0952d7c7500.607043061421907245.jpg","mobile_number":"01722761395","phone_number":"01711107287","designation":"Software Engineer「,」department「:」業務發展「 ,「關注」:「DBL Telecom Ltd」}]}

這是json。當我想通過一些字符串變量解析它時,我只能得到前三個變量值,其他的則爲空。

代碼:

{ 
     // Creating service handler class instance 
     ServiceHandler sh = new ServiceHandler(); 

     // Making a request to url and getting response 
     String jsonSt = sh.makeServiceCall(url, ServiceHandler.GET); 
     Log.e("Json String===", ""+jsonSt); 

     if (jsonSt != null) { 
      try { 
       JSONObject jsonObj = new JSONObject(jsonSt); 
       jSongArray = jsonObj.getJSONArray(TAG_EMPLOYEE); 



        JSONObject oneObject = jSongArray.getJSONObject(0); 

        sName = oneObject.getString(TAG_EMPLOYEE_NAME); 
        sDesignation = oneObject.getString(TAG_DESIGNATION); 
        sDepartment = oneObject.getString(TAG_DEPARTMENT); 
        sJoinDate = oneObject.getString(TAG_JOIN_DATE); 
        sImagePath = oneObject.getString(TAG_IMAGE_PATH); 
        sEmail = oneObject.getString(TAG_EMAIL); 
        sMobileNumber = oneObject.getString(TAG_MOBILE_NUMBER); 
        sPhoneNumber = oneObject.getString(TAG_PHONE_NUMBER); 
        sConcern=oneObject.getString(TAG_CONCERN); 


      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
     } else { 
      Log.e("ServiceHandler", "Couldn't get any data from the url"); 
     } 

     return null; 
    } 

在這裏我得到名稱,名稱和部門,但我得到其他空。我認爲這是一個奇怪的問題。當我把其他變量放在前面時,其他三個變量就會獲得價值。這三個變爲空。 其實一句話只有前三個變量獲取的值。其他變空。

+0

還顯示您用於從JSONObject中檢索值的鍵 – 2015-02-07 07:48:40

+0

鍵沒有問題。前三個總是獲得價值。 – 2015-02-07 08:03:01

+0

private static final String TAG_EMPLOYEE =「userinfo」;私人靜態最終字符串TAG_EMPLOYEE_NAME =「name」; private static final String TAG_DESIGNATION =「指定」; private static final String TAG_JOIN_DATE =「join_date」; private static final String TAG_MOBILE_NUMBER =「mobile_number」; private static final String TAG_IMAGE_PATH =「imgthumbLink」; private static final String TAG_DEPARTMENT =「department」; private static final String TAG_PHONE_NUMBER =「phone_number」; private static final String TAG_EMAIL =「email」; – 2015-02-07 08:04:03

回答

1

這裏:

sJoinDate = oneObject.getString(TAG_JOIN_DATE); 

此行引起問題,因爲在提供JSON字符串join_date沒有鑰匙可用。所以下一行不執行並且控制進入catch塊,因爲如果密鑰不可用,那麼getString將通過JSONException異常。

要解決此問題,請使用JSONObject.optString,這將返回null提供的密鑰找不到JSONObject