2016-09-21 5 views
1

これは簡単なことですが、わかりません。次の結果セットから次の方法でJSON応答を作成する必要があります

これはデータベースから受け取った結果セットです。

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

"answers"の下にあなたのソリューションを投稿し、それをあなた自身が受け入れることができます。 –

+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

私は本当にそれが何あなたの提示かどう

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); 
} 

本当にわからない、使用したいものをJSONライブラリ知っているが...ありません。

+0

お返事ありがとうございます。しかし、それは私が頼んでいたものではありません。私は解決策を見つけ出し、それを更新しました! – Naveen

関連する問題