在为无名JSONObject解析JSONArray时如何停止for循环?

时间:2012-07-31 04:36:27

标签: android json parsing for-loop

我想解析一个包含JSONArray的{​​{1}},这些JSONObject没有名字,并且数组中的{index int)位置每周都会发生变化。我试图通过它的属性解析特定的Object,但我的解析器只返回数组中的最后一个Object。

当我到达要解析的对象时,如何停止循环并确定对象的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 个答案:

答案 0 :(得分: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());
        }

答案 1 :(得分:1)

使用休息;声明打破循环,将代码更改为以下内容:

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.