这可能很简单,但我无法弄清楚。
这是我从数据库收到的结果集。
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();
最佳答案
我真的不知道你想使用什么 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);
}
不太确定这是否是您的要求。
关于java - 需要从以下结果集中按以下方式形成 JSON 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39618427/