3D pie 所需数据类型

3D pie需要的数据类型: [['Firefox',45.0],['IE',26.8]],ajax得到的后台数据为List<UserCount>,其中UserCount类如下:
Class UserCount {
private String name;
private Integer age;
}

怎么把从后台拿过来的数据转换成符合3D pie的格式,试了多种办法都不行。求解。
已邀请:

john - 个人微博:http://weibo.com/u/2175683160

赞同来自: huamao2015

我来简单说说:
 
1、饼图数据格式
 
完整的饼图数据格式应该是:
 
series: [{
name: 'pie',
data: [{
name: 'data1',
y: 20
},{
name: 'data2',
y: 40,
// 还可以有其他数据点的配置,例如 color
}]
}]

如果饼图的每个数据都是简单的 name 和 y ,那么就可以简写成 “['Firefox', 20], ['chrome', 40]” 形式了,当然也可以混合写
 
series: [{
name: 'pie',
data: [
['firefox', 40],
['chrome', 50],
{
name: 'IE',
y: 20,
color: 'red'
},
['other', 30]
]
}]

2、后端怎么处理成简写的形式
 
// 数据查询出结果集
List<UserCount> result = ;



List<List<Object>> resultList = new ArrayList<List<Object>>();


// 循环遍历查询结果集
for(UserCount u : result) {

List<Object> temp = new ArrayList<Object>();
temp.push(u.getName());
temp.push(u.getAge());

resultList.push(temp);
}


// toJson(resultList);

 

john - 个人微博:http://weibo.com/u/2175683160

赞同来自: huamao2015

另外,js 处理的方法是:
/**
* data = [{name: 'xx', age: 20}, {name: 'sdsd', age: 40}]
*/

var seriesData = [];
for (var i = 0; i < data.length; i++) {
var singleData = [];
singleData.push(data[i].name);
singleData.push(data[i].age);

seriesData.push(singleData);
}

jsbome - 个人博客:http://highcharts.daxueba.net

赞同来自:

用js处理一下。需要注意,很多时候从后台拿过来的数据看起来是数值,实际都是字符串。这个时候必须进行类型转化。

huamao2015 - 70后IT

赞同来自:

var i =0;len = data.length,arr=;
for(;i<len;i+=1){
 arr.push("["+data.name+","+data[i].age+"]");
[i][i][i]   }
console.log(arr);
这样输出来得到是:["[20150814,1]", "[20150817,2]"]
需要的是这样的 [['Firefox',45.0],['IE',26.8]] 或者[["Firefox",45.0],["IE",26.8]],这两种都行。
js我是纯小白,才转过来做的,求解。感谢!
[/i][/i][/i]

huamao2015 - 70后IT

赞同来自:

编辑了几次,上面的格式有点乱,顺便给版主反应下,这个编辑器有BUG。大概意思应该能看得懂。

huamao2015 - 70后IT

赞同来自:

感谢老大,问题已完美解决!

要回复问题请先登录注册