查詢數據庫得到包含 `time` 和 `io` 兩屬性的記錄列表,轉為 JSON 後,需將兩屬性分別提取到兩個集合(或數組)中,供前端圖表使用。
List<Map<String, Object>> list = jdbcTemplate.queryForList("SELECT time, io FROM sensor_data");
String json = JSONArray.fromObject(list).toString();
// json 格式:[{"time":"2023-01-01","io":123},{"time":"2023-01-02","io":456}]
JSONArray jsonArray = JSONArray.fromObject(json);
List<String> timeList = new ArrayList<>();
List<String> ioList = new ArrayList<>();
for (int i = 0; i < jsonArray.size(); i++) {
JSONObject obj = jsonArray.getJSONObject(i);
timeList.add(obj.getString("time")); // 獲取 time
ioList.add(obj.getString("io")); // 獲取 io(自動轉字符串)
}
// 若需轉數組
String[] timeArr = timeList.toArray(new String[0]);
String[] ioArr = ioList.toArray(new String[0]);
List<SensorData> dataList = jdbcTemplate.query("SELECT time, io FROM sensor_data",
(rs, rowNum) -> new SensorData(rs.getString("time"), rs.getInt("io")));
List<String> times = dataList.stream().map(SensorData::getTime).collect(Collectors.toList());
List<Integer> ios = dataList.stream().map(SensorData::getIo).collect(Collectors.toList());
若前端 ECharts 需 `{ categories: [], series: [{data:[]}] }`,後端直接組裝 Map 返回:
Map<String, Object> result = new HashMap<>();
result.put("time", timeList);
result.put("io", ioList);
return result; // SpringMVC 自動轉 JSON 響應