我很难使用hasNext()
迭代器方法。我有JSONArray
:
JSONArray = [{"a":1},{"b":2,"c":3}]
我一次访问一个JSONObject
。 JSONObject
中的第一个JSONarray
有一个元素,其中有两个元素。问题在于,当迭代器在第一个hasNext()
上检查JSONObject
时,它给出了一个元素,我的理解是,只有当它具有更多元素时才应该给出真实值。请帮助澄清一下。
for (int i=0; i<JArrayLength; i++) {
JSONObject obj = newJArray.getJSONObject(i);
Iterator k = obj.keys();
System.out.println("Value k.hasnext is = " + k.hasNext());
if(k.hasNext())
{ //print somehting} // here its printing but as the value should be false it should not for i=0.
}
请说明我哪里出错了。
答案 0 :(得分:0)
hasNext检查迭代器是否有任何迭代值以实际获取你应该做的值:
if(k.hasNext()){
k.next(); // gets the actual value
}
hasNext()如果迭代有更多元素,则返回true。
next()返回迭代中的下一个元素。
答案 1 :(得分:0)
打开迭代器
Iterator k = obj.keys();
然后立即检查是否有钥匙。由于您没有使用第一个密钥(a
),当然可以。
另请注意,您收到有关使用原始类型Iterator
的警告。注意它们并适当地进行参数化(可能使用<String>
)。