2016-09-21 2 views
1

Это может быть просто, но я не могу понять это.Необходимо сформировать ответ 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(); 
+0

Вы можете разместить свое решение в разделе «ответы» и принять его самостоятельно. –

+0

@ BenediktS.Vogler Сделал это.! Спасибо.! – Naveen

ответ

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

Я действительно не знаю, что библиотека JSON, который вы хотите использовать, но ...

JSONArray jarray = new JSONArray(); 
for (Result result : results) { 
    JSONObject obj = new JSONObject(); 
    obj.put("Name", result.name); 
    obj.put("Method", result.method); 
    obj.put("Value", result.value); 
    jarray.put(obj); 
} 

Не совсем уверен, если это то, что ваш запрашиваемая.

+0

Спасибо за ответ.! Но это не то, о чем я спрашивал. Я нашел решение и обновил его. – Naveen

Смежные вопросы