2014-10-13 2 views
0

мне нужно разобрать JSON, используя следующий кодандроид JSON не разборе значения для тега

urlGetDeviceIdMobileNo = Global.URL + "device_id=" 
        + strDeviceIdLocal; 

public class GetDeviceId extends AsyncTask<Void, Void, Void> { 
     ProgressDialog progressDialog; 

     @Override 
     protected void onPreExecute() { 
      progressDialog = new ProgressDialog(LoginScreen.this); 
      progressDialog.setMessage("Please Wait..."); 
      progressDialog.setCancelable(false); 
      progressDialog.show(); 
      super.onPreExecute(); 
     } 

     @Override 
     protected Void doInBackground(Void... arg0) { 
      JSONParser jParser = new JSONParser(); 
      JSONObject json = jParser.getJSONFromUrl(urlGetDeviceIdMobileNo); 
      System.out.println("!!!!!!!!!!!! json==="+json); 

      try { 

       strDeviceIdServer = (String) json.getString(TAG_DEVICE_ID); 
       strMobileNoServer = (String) json.getString(TAG_MOBILE_NO); 

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

     @Override 
     protected void onPostExecute(Void result) { 
      super.onPostExecute(result); 
      if (progressDialog.isShowing()) { 
       progressDialog.dismiss(); 
      } 
} 

Мои Json данные:

{ 
    status: "success", 
    data: 
    { 
     device_id: "35xxxxxxcccccvvvv", 
     mobile_number: "955896xxxxx" 
    } 
} 

Но LogCat говорит:

org.json.JSONException: No value for device_id 
+1

Отсутствует, JSONObject obj = new JSONObject ("data"); А затем String deviceId = obj.getString ("device_id"); –

+0

После публикации 'device_id' на сервере вы также получаете' device_id' от 'JSON' ?? и u пропустил тег «данных» ур. – Piyush

ответ

2

Просто замените это

try { 

       strDeviceIdServer = (String) json.getString(TAG_DEVICE_ID); 
       strMobileNoServer = (String) json.getString(TAG_MOBILE_NO); 

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

С

try { 

      strDeviceIdServer = json.getJSONObject("data").getString(TAG_DEVICE_ID); 
      strMobileNoServer = json.getJSONObject("data").getString(TAG_MOBILE_NO); 

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

Спасибо за быстрый повтор своей работы .. !!!! – Android

2

Ваш разборе неверен. Ваш JSONObject имеет дочерние JSONObject «данные», а этот дочерний JSONObject содержит device_id. Поэтому вы должны разобрать его так:

try { 
     JSONObject childJson = json.getJSONObject("data"); 
     if(childJson.has(TAG_DEVICE_ID)) 
      strDeviceIdServer = childJson.getString(TAG_DEVICE_ID); 
     if(childJson.has(TAG_MOBILE_NO)) 
      strMobileNoServer = childJson.getString(TAG_MOBILE_NO); 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
Смежные вопросы