Android 迭代json时发生java.util.NoSuchElementException错误

Android 迭代json时发生java.util.NoSuchElementException错误,android,Android,我正在尝试解析以下json { "status": 1, "value": { "star1": { "0": "Response from Vaighai is good", "1": "Shipment process is fine" }, "star2": { "0": "Shipment process is fine", "1": "Response from Vaighai is good",

我正在尝试解析以下json

{
  "status": 1,
  "value": {
    "star1": {
      "0": "Response from Vaighai is good",
      "1": "Shipment process is fine"
    },
    "star2": {
      "0": "Shipment process is fine",
      "1": "Response from Vaighai is good",
      "2": "Shipment status through app is"
    }
  }
}
这是我使用的代码

JSONObject value = new JSONObject(notificationResponse.getString("value"));
JSONObject starOne = value.getJSONObject("star1");
JSONObject starTwo = value.getJSONObject("star2");

Iterator<String> starOneIterator = starOne.keys();
Iterator<String> starTwoIterator = starTwo.keys();

String starOnestatus = null;
String starOnekey = null;
String starTwostatus = null;
String starTwokey = null;

while (starOneIterator.hasNext()){
    starOnekey = starOneIterator.next();
    starOnestatus = starOne.optString(starOneIterator.next());
}

while (starTwoIterator.hasNext()){
    starTwokey = starTwoIterator.next();
    starTwostatus = starTwo.optString(starTwoIterator.next());
}
JSONObject value=newjsonobject(notificationResponse.getString(“value”);
JSONObject starOne=value.getJSONObject(“star1”);
JSONObject starTwo=value.getJSONObject(“star2”);
迭代器starOneIterator=starOne.keys();
迭代器startwointerator=starTwo.keys();
字符串starOnestatus=null;
字符串starOnekey=null;
字符串starTwostatus=null;
字符串starTwokey=null;
while(starOneIterator.hasNext()){
starOnekey=starOneIterator.next();
starOnestatus=starOne.optString(starOneIterator.next());
}
while(starTwoIterator.hasNext()){
starTwokey=starTwoIterator.next();
starTwostatus=starTwo.optString(starTwoIterator.next());
}
我收到以下错误消息,
java.util.NoSuchElementException
。。运行时我可能不知道密钥,所以我在while循环中迭代它,但错误消息被触发。

将此更改为

 JSONObject jObjRoot = new JSONObject(notificationResponse.toString());
    JSONObject jObjvalue = jObjRoot.getJSONObject("value");
    JSONObject starOne = jObjvalue.getJSONObject("star1");
    JSONObject starTwo = jObjvalue.getJSONObject("star2");

Iterator<String> starOneIterator = starOne.keys();
Iterator<String> starTwoIterator = starTwo.keys();

String starOnestatus = null;
String starOnekey = null;
String starTwostatus = null;
String starTwokey = null;

while (starOneIterator.hasNext()){
    starOnekey = starOneIterator.next();
    starOnestatus = starOne.optString(starOneIterator.next());
}

while (starTwoIterator.hasNext()){
    starTwokey = starTwoIterator.next();
    starTwostatus = starTwo.optString(starTwoIterator.next());
}
JSONObject jObjRoot=newjsonobject(notificationResponse.toString());
JSONObject jObjvalue=jObjRoot.getJSONObject(“值”);
JSONObject starOne=jObjvalue.getJSONObject(“star1”);
JSONObject starTwo=jObjvalue.getJSONObject(“star2”);
迭代器starOneIterator=starOne.keys();
迭代器startwointerator=starTwo.keys();
字符串starOnestatus=null;
字符串starOnekey=null;
字符串starTwostatus=null;
字符串starTwokey=null;
while(starOneIterator.hasNext()){
starOnekey=starOneIterator.next();
starOnestatus=starOne.optString(starOneIterator.next());
}
while(starTwoIterator.hasNext()){
starTwokey=starTwoIterator.next();
starTwostatus=starTwo.optString(starTwoIterator.next());
}
更改

starOnestatus=starOne.optString(starOneIterator.next())

starOnestatus=starOne.optString(starOnekey)


此更改也适用于其他迭代。

在开始对象中,有对象不是数组,不是吗
jObjvalue.getJSONObject(“star1”)?哦……我忘了。谢谢你注意到了。现在编辑。:)starTwoKey和starTwostatus提供空值