前段时间有个需求是做一个echart的折线图,有多根折线,数量不定,并且横坐标是通过条件查询获得的,echarts2折线图的data需要传入一个数组,基于以上情况,我需要从后台接收json,且json的value为数组。
我尝试了许多写法,以下写法是切实有效的:
后台:
List<String> sums = new ArrayList<String>();
List<String> dates = new ArrayList<String>();
......
//注意这里要toArray(),不然前台获取时会不认做array
map.put("sums", sums.toArray());
map.put("dates", dates.toArray());
return net.sf.json.JSONArray.fromObject(map);
前台:
//这里用的是easyui,获取下拉列表的值,有多少值就有多少折线
var rows = $("#searchLines").datalist("getRows");
$.post(
"",
{},
function(data){
var json = eval(data);
var legend = new Array();
//这里要加一个json[0],因为后台传过来的是一个json数组
var xAxis = json[0]["dates"];
var optionSrc = {
...,
series :[]
};
$.each(rows,function(n,value){
legend[n] = value.text;
var temp = new Array();
temp = json[0][value.text];
if(temp.length==0){
temp = [];
}
var ser = {
name:value.text,
type:'line',
data:temp
};
optionSrc.series.push(ser);
});
}
,'json');
特此记录一下这种写法,方便查验。