[英]iterate JSON response with jQuery for Highcharts
我制作了一个Servlet,它创建了一个Map对象:
Map<String, Integer> data = new LinkedHashMap<String, Integer>();
填写数据并使用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);
});
无论如何,我在这里做错了。 要么在迭代中,要么我如何“初始化” 系列 。
以下是我的资料,供您更好地理解:
[]
应该映射到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<Serie> series = new ArrayList<Serie>();
series.add(new Serie("Monday", 10));
series.add(new Serie("Tuesday", 20));
series.add(new Serie("Wednesday", 30));
// ...
Map<String, Object> data = new HashMap<String, Object>();
data.put("series", series);
// ...
String json = new Gson().toJson(data);
// ...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.