最新消息:

Service生成JSON数据,并返回给前台

Web 观测者 2183浏览

一、在项目中添加所需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数据,并返回给前台