格式化高图的JSON

时间:2016-02-11 22:17:01

标签: javascript java json highcharts

我有一个servlet正在运行,从doGet上的DB提取数据并使用JSON格式化的字符串进行回复以填充Highchart.js时间 - 系列图表:

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

我是javascripthighchartJSON的新手,是否可以将其细化为使用实际的JSON对象/数组而不是字符串,或者是我有合理的方法来解决这个问题的方法。

1 个答案:

答案 0 :(得分:0)

您手动构造一个JSON字符串,冒着在结果字符串中出现语法错误的风险。由于您只是生成数字数组的数组,因此这种风险似乎是可控的。否则,您可能希望使用所有常见JSON库提供的JSONWriter之类的内容。

对性能StringBuilder使用String代替json,性能稍有改善。

我会改进错误处理。如果没有找到数据或缺少参数,您将返回错误消息。

在第一种情况下,我只返回空数组,让客户端弄清楚数据是空的。

如果缺少必需参数,我会回答HTTP错误400(错误请求):

response.sendError(400);

如果在检索数据时发生运行时错误,我不会吞下异常但会发送内部服务器错误(500)并记录异常。