Это может быть просто, но я не могу понять это.Необходимо сформировать ответ JSON следующим образом из следующих результатов:
Это ResultSet, который я получаю из базы данных.
Name Method Value
Website Online 450
Website Offline 500
Mobile Online 100
Mobile Offline 600
Мне нужно отправить ответ на передний конец в следующем формате JSON.
response: [
{
"Name" : "Website",
"Online" : 450,
"Offline" : 500
},
{
"Name" : "Mobile",
"Online" : 100,
"Offline" : 600
}
]
Мне нужно сформировать этот JSON в одном цикле, желательно, читая сам ResultSet. Каков наилучший способ достичь этого? Спасибо, заранее.
P.S: Запрос уже является сложным, поэтому не может сводить проблемы производительности таблицы. Вышеуказанный ResultSet является образцом, могут быть сотни записей в ResultSet
Обновление: Я не уверен, насколько эффективным является следующее решение, но оно работает.!
Map<String, Map<String, Object>> objectMap = new LinkedHashMap<String,Map<String, Object>>();
Map<String, Object> map;
while(rs.next()){
if(objectMap.containsKey(rs.getString("Name"))){
map = objectMap.get(rs.getString("Name"));
map.put(rs.getString("Method"), rs.getInt("Value"));
}
else {
map = new HashMap<String, Object>();
map.put("Tag", 0);
map.put("Plate", 0);
map.put("Name", rs.getString("Name"));
map.put(rs.getString("Method"), rs.getInt("Value"));
}
objectMap.put(rs.getString("Name"), map);
}
return objectMap.values();
Вы можете разместить свое решение в разделе «ответы» и принять его самостоятельно. –
@ BenediktS.Vogler Сделал это.! Спасибо.! – Naveen