使用jQuery for Highcharts迭代JSON响应

我创建了一个创建Map对象的servlet:

Map data = new LinkedHashMap(); 

填写数据并使用google JSON以JSON格式返回响应:

 String json = new Gson().toJson(data); 

所有这些在检索数据并将它们迭代到表中时都能正常工作。 但我需要特殊格式的Highcharts插件:

 series: [{ name: 'Monday', data: [10] }, { name: 'Tuesday', data: [20] }, { name: 'Wednesday', data: [30] }, { name: 'Thursday', data: [40] }, { name: 'Friday', data: [50] }, { name: 'Saturday', data: [60] }, { name: 'Sunday', data: [70] }] 

为了实现这一点,您必须创建脚本,如下所示:

 $(document).ready(function() { var options = { chart: { renderTo: 'container', defaultSeriesType: 'column', rightMargin: 80 }, title: { text: 'Weekdays' }, subtitle: { text: 'Source: somewhere in a calendar' }, xAxis: { labels: { enabled: false } }, yAxis: [ { min: 0, title: { text: 'Amount' } }, { linkedTo: 0, opposite: true } ], series: [] }; $.getJSON('WeekdayServlet', function(data) { var series = []; $.each(data, function(key, value) { series.name = key; series.data = value; options.series.push(data); }); // Create the chart var chart = new Highcharts.Chart(options); }); 

无论如何,我在这里做错了。 无论是在迭代中还是我如何“初始化” 系列

以下是我更好理解的资料来源:

  • http://jsfiddle.net/PPAUx/718/
  • http://www.highcharts.com/documentation/how-to-use (点3.1案例研究:预处理数据)

[]应映射到Java集合,例如List或数组。 {}应映射到Map或某些Javabean。

因此,可以如下翻译/实现所需的JSON格式:

 public class Serie { private String name; private Integer[] data; public Serie() { // Keep default c'tor alive. } public Serie(String name, Integer... data) { this.name = name; this.data = data; } // Add/generate getters/setters/etc. } 

 List series = new ArrayList(); series.add(new Serie("Monday", 10)); series.add(new Serie("Tuesday", 20)); series.add(new Serie("Wednesday", 30)); // ... Map data = new HashMap(); data.put("series", series); // ... String json = new Gson().toJson(data); // ...