Дополнительно
Foreach с JSONArray и JSONObject
Я использую org.json.simple.JSONArray
и org.json.simple.JSONObject
. Я знаю, что эти два класса JSONArray
и JSONObject
несовместимы, но все же я хочу сделать вполне естественную вещь - я хочу, чтобы for-each над JSONArray
разбирал на каждом шаге итерации один JSONObject
(вложенный внутрь этого JSONArray
). Я пытаюсь сделать это следующим образом:
JSONArray arr = ...; // <-- got by some procedure
for(JSONObject o: arr){
parse(o);
}
Когда я пытаюсь скомпилировать этот код, то действительно получаю "несовместимые типы" ошибку, хотя это выглядит так естественно. Итак, мой вопрос в том, какой лучший способ итерации через JSONArray
?
19
3
Похоже, что вы не можете выполнять итерации по
JSONArray
с помощьюfor each
. Вы можете перебиратьJSONArray
следующим образом:Источник
Очевидно,
org.json.simple.JSONArray
реализует сырой итератор. Это означает, что каждый элемент рассматривается какобъект
. Вы можете попытаться сделать кастинг:Именно так все делалось в Java 1.4 и более ранних версиях.
если вы используете Java 8, то вы можете использовать
Добавил простой тест, чтобы доказать, что это работает:.
Добавьте следующую зависимость в ваш файл
pom.xml
(Чтобы доказать, что это работает, я использовал старый jar, который был там, когда я разместил этот ответ)И простым фрагментом тестового кода будет:
вывод: