2012-07-31 113 views
1

我想解析一個JSONArray,其中包含JSONObject s,它們沒有名稱,並且其陣列中的(index int)位置每週都在更改。我試圖通過它的屬性來解析特定的Object,但是我的解析器只返回數組中的最後一個對象。如何在解析無名JSONObject的JSONArray時停止for循環?

當我想要解析並確定對象的int索引以便進一步解析時,如何停止循環。

try { 
     JSONArray jArray = JSONthing.getJSONfromURL("http://something.com"); 
     String attributeiwant = "abc"; 
     for (int i = 0; i < jArray.length(); i++) { 
      JSONObject alpha = jArray.getJSONObject(i); 
      String attributeparsed = alpha.getString("widget"); 
      if (attributeparsed == attributeiwant) { 
       //determine int index of object, so i can parse other attributes 
       //from same object   

      } 
     } 
     } catch (Exception e) { 
     Log.e("log_tag", "Error parsing data "+ e.toString()); 
     } 

回答

2

使用String.equals比較,而不是==字符串

try { 
     JSONArray jArray = JSONthing.getJSONfromURL("http://something.com"); 
     String attributeiwant = "abc"; 
     for (int i = 0; i < jArray.length(); i++) { 
      JSONObject alpha = jArray.getJSONObject(i); 
      String attributeparsed = alpha.getString("widget"); 
      if (attributeparsed.equals(attributeiwant)) { 
       //determine int index of object, so i can parse other attributes 
       //from same object   
       // Get data from JsonObject 
       break; 
      } 
     } 
     } catch (Exception e) { 
     Log.e("log_tag", "Error parsing data "+ e.toString()); 
     } 
+0

你真棒伊姆蘭。謝謝!!! – 2012-07-31 05:11:35

+0

@ B.Money:最受歡迎的朋友!!! :) – 2012-07-31 05:14:16

1

use break;聲明打破循環,改變你的代碼如下:

int i = 0; 

try { 
     JSONArray jArray = JSONthing.getJSONfromURL("http://something.com"); 
     String attributeiwant = "abc"; 
     for (; i < jArray.length(); i++) { 
      JSONObject alpha = jArray.getJSONObject(i); 
      String attributeparsed = alpha.getString("widget"); 
      if (attributeparsed.equals(attributeiwant)) { 
       //determine int index of object, so i can parse other attributes 
       //from same object   
       break; 
      } 
     } 
     } catch (Exception e) { 
     Log.e("log_tag", "Error parsing data "+ e.toString()); 
     } 

if(i<jArray.length()) 
{ 
    //item found, use i as index of object. 
} 
else 
    //item not found.