FusionCharts有两种格式,XML格式和JSON格式;这里,将讲述如何利用JSON格式拼接FusionCharts的数据源。在利用Java拼接字符串时,可以用String(+=)、StringBuilder拼接字符串,但是用“+=”拼接字符串不仅效率低,而且容易引起的SQL注入问题,具体如下:
前期准备工作(包括相关工具或所使用的原料等)MyEclipse10JDK1.7JSON格式化工具 详细的操作方法或具体步骤
通过在FusionCharts API中看到JSON格式,多系列图形格式如下:
{
"chart": {
"caption": "",
"xaxisname": "",
"yaxisname": "",
"showvalues": ""
},
"categories": [
{
"category": [
{
"label": ""
}
]
}
],
"dataset": [
{
"seriesname": "",
"data": [
{
"value": ""
}
]
},
{
"seriesname": "",
"data": [
{
"value": ""
}
]
}
]
}


下面新建一个Java Class,在main方法中拼接fusioncharts字符串
public static void main(String[] args)
{
//FusionChart中的chart
String chartHead="{'chart':{'caption':'2014年人数分布','xaxisname':'月份','yaxisname':'人数','showvalues':'0'},";
//拼接FusionChart中的categories
String xAxis="'categories':[{'category':[";
//拼接FusionChart中的dataset
String yAxis="'dataset':[";
for(int i=1;i<4;i++)
{
xAxis +="{'label':'"+i+"月'},";
}
for(int j=0;j<3;j++)
{
yAxis +="{'seriesname':'"+j+"','data':[";
for(int k=0;k<3;k++)
{
yAxis +="{'value':'"+(j+200)+"'},";
}
//去掉最后一个“,”
yAxis=yAxis.substring(0, yAxis.length()-1);
yAxis +="]},";
}
xAxis=xAxis.substring(0, xAxis.length()-1);
xAxis +="]}],";
//去掉最后一个“,”
yAxis=yAxis.substring(0, yAxis.length()-1);
System.out.println(xAxis);
System.out.println(yAxis);
String chart=chartHead + xAxis + yAxis + "]}";
System.out.println("FusionChart多系列图:"+chart);
}
如下图所示:


运行Java应用程序,会看到控制台打印以下字符串,如下图所示:

上述是用“+=”拼接字符串,用这种方式拼接字符串,会导致
(1)效率非常低
(2)可能会导致SQL注入

下面将换种方式拼接字符串,利用Java中自带的lang包中的StringBuilder
如下图所示:

不过,在打印的字符串发现不是要求的字符串,并且字符串中多添加了一些字符串

于是,我单独写了一个静态的方式
/**
*
* 方法名:transform
* 方法类型:ChartUtils
* 参数:@param str
* 参数:@return
* @return:StringBuilder
* @throws
*/
public static StringBuilder transform(String str)
{
return new StringBuilder(str);
}

将上述静态方法利用起来,在for循环中调用这个方法
for(int j=0;j<3;j++)
{
yAxis.append("{'seriesname':'").append(j).append("','data':[");
//yAxis +="{'seriesname':'"+j+"','data':[";
for(int k=0;k<3;k++)
{
yAxis.append("{'value':'").append(k+200).append("'},");
//yAxis +="{'value':'"+(j+200)+"'},";
}
//去掉最后一个“,”
yAxis=transform(yAxis.toString().substring(0, yAxis.length()-1));
yAxis.append("]},");
}
如下图所示:


这样,利用StringBuilder拼接的字符串,要比“+=”拼接的字符串效率高

注意事项比较“+=”和StringBuilder拼接字符串的差异熟悉FusionCharts的JSON格式的属性经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。作者声明:本教程系本人依照真实经历原创,未经许可,谢绝转载。
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
