0
我有一個servlet
運行的是一個來自DB
上的doGet提取數據,並用JSON
格式化字符串響應填充Highchart.js
時間序列圖:格式化JSON用於highchart
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String json = "";
String sDate = request.getParameter("start");
String eDate = request.getParameter("end");
String app = request.getParameter("app");
String env = request.getParameter("env");
if (sDate != null && eDate != null) {
Timestamp from = TimestampUtils.parseTimestamp(sDate, null);
Timestamp to = TimestampUtils.parseTimestamp(eDate, null);
try {
throughPutList = interop.getThroughputEntriesInTimespan(env, app, from, to);
} catch (Exception e) {
e.printStackTrace();
}
int counter = 1;
if (throughPutList != null) {
json += "[";
}
assert throughPutList != null;
for (ThroughputEntry chartModel : throughPutList) {
json += "[" + (chartModel.getRetrieved().getEpochSecond()* TimestampUtils.MILLIS_PER_SECOND + "," + chartModel.getThroughput() + "]");
if (counter < throughPutList.size()) {
json += ",";
}
counter++;
}
if (throughPutList != null) {
json += "]";
}
if (throughPutList == null) {
json = "No record found";
}
} else {
json = "Date must be selected." + "App : " + app + " " + eDate;
}
response.getWriter().write(json);
}
}
我是新來javascript
,highchart
和JSON
,是有可能這個細化到也許用實際JSON
對象/數組,而不是一個字符串,或者是我有一個合理的方式來解決這個方法。
也許你可以使用,可以將輸入到JSON Java中,庫(例如:GSON或傑克遜)。如果 許多advdantages您使用此梅索德:Java對象的使用100%,不管你忘記了「,或者如果您忘記了關鍵 我儘量給你在幾分鐘內小碼 –
我的想法期運用之一的。我可以使用這些庫將它解析成'highchart.js'可以理解的'JSON'格式 – Johntk
我剛剛驗證了高層圖所需的json字符串的格式,我同意你的看法,沒有必要使用這些librairies因爲沒有必要有鍵和值。 因此,我建議,讓您的代碼,但也有一些乾淨要做。 使用StringBuilder噸CONCAT值這將是更好的性能,當你的名單將是更大更多 嘗試用請求初始化變量: 例如:String app = request.get參數(「應用程序」)? request.getParameter(「app」):「value」; –