之前写了一篇对json的理解,理解是理解了,结果做项目的时候还是不会用,所以在实践之后再来写这篇对json的应用。
应学长要求,做一个表格显示,点击按钮,从后台将数据取出并将之传到前台来显示,我觉得是一个很典型的json交互的应用。如图
首先,js响应函数中,将前台接受到的type,year,断面名称拼接成json格式,用ajax传入到xzdm.action里进行处理响应,返回数据库中的信息。如图
var type=$("#xztype option:selected").val();
// var zhenqu=$("#xzzhenqu option:selected").val();
var year=$("#xzyear option:selected").val();
function getjson() {
var jsonStr = "{"; // json格式开始
jsonStr+="\"type\":\""+type+
"\",\"dmmc\":\""+dmmc+
"\",\"hlmc\":\""+hlmc+
"\",\"year\":\""+year+
"\"}";
var jsonObj = jQuery.parseJSON(jsonStr);
return jsonObj;
}
$.post("xzdm.action",getjson(),function(result){
接着就是写action的时间了。但是在写action中你首先要知道你要返回的json应该是什么样子的,应该包含两个信息,一个是横轴X的数据,一个是纵轴Y的数据。
{
"x":[
"第1季度",
"第2季度",
"第3季度",
"第4季度"
],
"series":[{
"data":
[
1.01,
0.712
]
"name":"aq",
}]
}
将Java数据转换成json数据有两种办法,一个是将Java对象直接转换成json对象,一个是直接拼接的方法。这次使用的是简单暴力的拼接方法,原因嘛。。。。因为里面有多个数组,使用了转json对象的方法失败了,等回去研究好在写转对象的方法。 public void xzdm(HttpServletRequest request,HttpServletResponse response,XzdmCustom example,String type)
{
XzdmExample xzdmExample= toexampleservice.xzdmtoexample(example);
xzdmExample.setOrderByClause("season");
List<Xzdm> xzdms=xzdmservice.selectByExample(xzdmExample);
String json ="{\"x\":[";
for(int i=0;i<xzdms.size();i++){
json+="\"第"+xzdms.get(i).getSeason()+"季度\",";
}
json=json.substring(0,json.length()-1);
json+="],\"series\": [{\"data\": [";
if(type.equals("ad")){
for(int i=0;i<xzdms.size();i++){
json+=xzdms.get(i).getAd()+",";
}
json=json.substring(0,json.length()-1);
json+="],\"name\": \"氨氮\"}]}";
}
else if(type.equals("zl")){
for(int i=0;i<xzdms.size();i++){
json+=xzdms.get(i).getZl()+",";
}
json=json.substring(0,json.length()-1);
json+="],\"name\": \"总磷\"}]}";
}
拼接要注意的地方只有一个,那就是转义字符" \",一不小心拼接就出错了。所以我想了一个对自己比较有用的方法,那就是把格式在记事本上写出来,然后这样 {
\"x\":[
\"第1季度\",
"第2季度",
"第3季度",
"第4季度"
],
\"series\":[{
\"data\":
[
1.01,
0.712
]
\"name\":\"aq\",
}]
}
将要加转意字符的地方写上去。看着写,一般就不会出错啦 版权声明:本文为qq_37891064原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。