Сложно суммировать вопрос в одном предложении.Проще показать, чего я хочу.У меня есть следующий ответ на запрос Solr:
{
.....
},
"facet_counts":{
"facet_queries":{},
"facet_fields":{
"city":[
"New York",23258,
"Los Angeles",13322,
"Paris",1189]},
"facet_ranges":{},
"facet_intervals":{},
"facet_heatmaps":{}}}
Я использую GSON для анализа этих данных JSON и получения JsonArray, содержащего массив «city».Он содержит чередующиеся элементы для имени поля (ключа) и соответствующего значения.Например, у нас есть 13322 хита для "Лос-Анджелеса".Я хочу перебрать этот массив, чтобы получить содержащиеся в нем пары ключ = значение.
Я могу придумать несколько простых решений для этой задачи, например
boolean isKey = true;
String key;
String val;
for(JsonElement je : facetMT) {
if(isKey) {
key = je.getAsString();
isKey = false;
} else {
val = je.getAsString();
resultMap.add(key,val);
isKey = true;
}
}
или любойДругой способ различать нечетные и четные элементы, например, проверка делимости на 2.
Но это кажется грубым.Я уверен, что у Java есть какой-то другой элегантный способ сделать это, например, работать с итератором и пропускать все остальные элементы.Но я не достаточно хорош в Java, чтобы знать, как это сделать, или каким-либо другим суперсумным способом.
Есть предложения, или мне просто пойти с грубым кодом?