2012-09-04 23 views
0

我有一個JSONObject並具有類似的值:JSONObject.getString()返回nulll

{ 
    "Success": true, 
    "City": { 
     "1": "noida", 
     "2": "Delhi", 
     "3": "Kanpur", 
     "4": "Gurgaon", 
     "5": "Mumbai", 
     "7": "Noida", 
     "8": "NEWYORK", 
     "9": "Patna" 
    } 
} 

我有一個關鍵值每值有關,但沒有關於鍵「6」的價值。所以它返回「沒有值6」的例外。我試圖通過使用這段代碼刪除它,但是失敗了......請記住,城市將以String []的形式呈現在微調框中。

的代碼如下:

JSONObject jsonCities = jsonObject.getJSONObject("City"); 
         int len = jsonCities.length(); 
         Log.i("Length of jsonCities is :", ""+len); 
         for(int i=1;i<=len;i++) 
         {  
          if(jsonCities.get(""+i)==null) 
         { 
           Log.i("NULL VALUE", "NULL VALUE"); 
           continue; 
         } 
          else 
         { 
          Log.i("Cities :",""+jsonCities.getString(""+i)); 
          cities_hashmap.put(""+i, ""+jsonCities.getString(""+i)); 
          Log.i("cities_hashmap", ""+cities_hashmap); 
         } 

        } 

        cities = new String[cities_hashmap.size()]; 

        for(int j=1;j<=cities_hashmap.size();j++) 
        { 
         Log.i("CITY IS :", cities_hashmap.get(""+j)); 

         cities[j-1] = cities_hashmap.get(""+j); 
         Log.i("City Array in String form is :", ""+cities); 

        } 


context.runOnUiThread(new Runnable() { 

          public void run() { 
           // TODO Auto-generated method stub 

           ArrayAdapter<String> adapter = new ArrayAdapter<String>(Registration.this, android.R.layout.simple_spinner_item, cities); 
           country.setAdapter(adapter); 

          } 
         }); 

回答

0

只需使用這樣的:

String value = jsonCities.getString(Integer.toString(i)); 
+0

對不起,先生......,這不是對我的作品... – Maddy

0

if(jsonCities.has(""+i)){ 
    // do the thing 
} 

檢查多個方法跳過作爲

for(int i=1;i<=len;i++) 
    {  
      if(i == 6) 
      { 
       i += 1; 
      } 
      if(jsonCities.get(""+i)==null) 
      { 
       Log.i("NULL VALUE", "NULL VALUE"); 
       continue; 
      } 
      else 
      { 
       Log.i("Cities :",""+jsonCities.getString(""+i)); 
       cities_hashmap.put(""+i, ""+jsonCities.getString(""+i)); 
       Log.i("cities_hashmap", ""+cities_hashmap); 
      } 
      ... 
      ... 
+0

你那裏工作了嗎? –

+0

它不能解決先生...這可能是可能的然後如果我從另一個微調選擇不同的價值...,那麼第一個記錄可能是空的..這個值取決於另一個微調 – Maddy

+0

哦,那麼你必須做的努力代碼按照微調值更改.. –

0

你可以改變這個 'for' 循環

for(int i=1;i<=len;i++) 

Iterator it = jsonCities.keys(); 
while(it.hasNext()) 
{ 
    String key = it.next().toString(); 
    ... 
} 
+0

以及如何獲得有關這些鍵的值 – Maddy

+0

我有一個散列表。在微調器中使用hashmap的值。我如何識別對應的鍵,選擇哪個值? – Maddy

+0

獲得密鑰後,只需將「cities_hashmap.put(key,jsonCities.getString(key));」你就完成了。 –