2016-03-02 2 views
2

Im пытается проанализировать следующие JSonjava.util.NoSuchElementException ошибка при переборе в 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" 
    } 
    } 
} 

Это код, который Im используя

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()); 
} 

Im получаю следующее сообщение об ошибке, java.util.NoSuchElementException .. Возможно, я не знаю ключа во время выполнения, поэтому я повторяю его в цикле while, но сообщение об ошибке запускается.

+0

в объекте запуска есть объекты, а не массивы –

+0

предоставить журнал ошибок – ELITE

ответ

3

Изменение

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

в

starOnestatus = starOne.optString(starOnekey);

изменение также относится и к другой итерации.

+0

Это сработало как шарм :) –

1

Изменить это

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()); 
} 
+0

Не должно быть 'jObjvalue.getJSONObject (" star1 ");'? – Rohit5k2

+0

О, я забыл. Спасибо, что заметили это. Отредактировано сейчас. :) –

+0

снова та же ошибка забрасывается –