Получаю ответ от Elasticsearch с дубликатами, чтобы избежать использования Hashmap
реализации и put
всех значений в объекте HashMap
.
После этого я перебираю объект HashMap
для преобразования в JSONArray.
Получаю одну уникальную запись из distinctObjects
(HashMap Object). Но после преобразования в JSONArray длина JSONArray показывает 2
, предполагается, что он равен 1
, и я печатаю JSONArray, как показано ниже.
JSONArray --->[{"code":"VA1125-GGA-1","id":"code"},{"code":"12816","id":"id"}]
Ожидаемый результат должен быть:
JSONArray --->[{"code":"VA1125-GGA-1","id":"12816"}]
Пожалуйста, найдите мой код ниже.
JSONObject responseObj;
JSONArray responseArray = new JSONArray();
Map<String, Object> distinctObjects = null;
SearchHit[] searchHits2 = searchResponse2.getHits().getHits();
for (SearchHit hit2 : searchHits2) {
Map<String, Object> sourceAsMap2 = hit2.getSourceAsMap();
distinctObjects = new HashMap<String, Object>();
distinctObjects.put("id", sourceAsMap2.get("id").toString());
distinctObjects.put("code", sourceAsMap2.get("code").toString());
}
Iterator it = distinctObjects.entrySet().iterator();
while (it.hasNext()) {
Map.Entry pair = (Map.Entry)it.next();
System.out.println(pair.getKey() + " = " + pair.getValue());
responseObj = new JSONObject();
responseObj.put("id", pair.getKey());
responseObj.put("code", pair.getValue());
responseArray.put(responseObj);
it.remove(); // avoids a ConcurrentModificationException
}
System.out.println("Link ID List Size --->"+responseArray.length());
System.out.println("JSONArray --->"+responseArray.toString());