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”; –