一、在项目中添加所需jar包(下载地址:百度网盘,提取密码:bun7),在Service中查询相关的sqlMap,获得List集合,再将List转换为JSON,返回给前台。代码:
import java.util.HashMap;
import java.util.Map;
import java.util.List;
import net.sf.json.JSONArray;
import com.baosight.iplat4j.core.ei.EiInfo;
import com.baosight.iplat4j.ep.ServiceEPBase;/**
* 用于生成JSON页面,需要传入两个参数
* dataTable:即sqlMap中的namespace.selectId,例如QMMC0001.queryQMMC02Filter
* filter:SQL中需要用到的参数
*/
public class ServiceQMMC0000 extends ServiceEPBase {
public EiInfo initLoad(EiInfo inInfo) {
String dataTable = inInfo.getString("dataTable");
String filter1 = inInfo.getString("filter1");
String filter2 = inInfo.getString("filter2");
Map map = new HashMap();
map.put("filter1", filter1);
map.put("filter2", filter2);
List valueList = dao.query(dataTable,map);
JSONArray json = JSONArray.fromObject(valueList);
System.out.println(json.toString().toLowerCase());
inInfo.set("dataSource",json.toString().toLowerCase());
return inInfo;
}
}
二、前台接受Service返回数据,生成JSON页面:
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<c:set var="dataSource" value="${ei.attr.dataSource}"/>
${dataSource}
三、在需要用到JSON数据的地方访问该JSON页面,即可获得JSON数据:
function createChart(filter) {
var crudServiceBaseUrl = "http://localhost:8080/bgdwsh/DispatchAction.do?efFormEname=QMMC0000";
var dataTable = "QMMC0001.queryQMMC02Filter";
$("#DivQMMC0102").kendoChart({
dataSource: {
transport: {
read: {
url: crudServiceBaseUrl + "&dataTable="+dataTable + "&filter1="+filter,
dataType: "json"
}
}
},
legend: {
position: "top"
},
seriesDefaults: {
type: "pie"
},
series: [{
field: "share",
categoryField: "resolution",
padding: 0
}],
tooltip: {
visible: true,
format: "N0",
template: "#= category # - #= kendo.format('{0:P}', percentage)#",
}
});
}
=============================JSON常用操作=============================
一、Jquery获取远程JSON数据
$.getJSON("price-performance.json",function(result){
var dataObj=result;
createChart(dataObj);
});
二、在JS中将字符串转换成json
第一种:eval方式解析
function strToJson(str){
var json = eval('(' + str + ')');
return json;
}
第二种:new Function形式
function strToJson(str){
var json = (new Function("return " + str))();
return json;
}
第三种:使用全局的JSON对象
function strToJson(str){
return JSON.parse(str);
}
另外,使用JSON.parse需严格遵守JSON规范,如属性都需用引号引起来,如下:
var str = '{name:"jack"}';
var obj = JSON.parse(str); // --> parse error
name没有用引号引起来,使用JSON.parse所有浏览器中均抛异常,解析失败。
转载请注明:观测者 » Service生成JSON数据,并返回给前台