importPackage(Packages.java.net) importPackage(Packages.java.util) importPackage(Packages.smartbi.util) var returnDesc = [{ id: 'userId', //字段ID name: 'userId', //字段名称 alias: '用户编号', //字段别名 desc: '用户编号', //字段描述 valueType: 'INTEGER' //字段数据类型:INTEGER | DOUBLE | LONG | STRING | DATETIME }, { id: 'id', //字段ID name: 'id', //字段名称 alias: '编号', //字段别名 desc: '编号', //字段描述 valueType: 'INTEGER' //字段数据类型:INTEGER | DOUBLE | LONG | STRING | DATETIME }, { id: 'title', //字段ID name: 'title', //字段名称 alias: '标题', //字段别名 desc: '标题', //字段描述 valueType: 'STRING' //字段数据类型:INTEGER | DOUBLE | LONG | STRING | DATETIME }] /** 服务器先调用init初始化,获取参数与输出字段 返回参数与输出字段的声明对象 */ function init() { return { //参数列表 params: [{ id: 'PostId', //参数ID name: 'PostId', //参数名称 alias: '帖子编号', //参数别名 desc: '帖子编号', //参数描述 nullable: true, //参数是否允许是空 valueType: 'STRING' //参数数据类型:INTEGER | DOUBLE | LONG | STRING | DATETIME }], //输出字段 fields: returnDesc }; } /** 获取数据,以二维数组返回。每个元素包含value属性 也可以返回smartbi.freequery.querydata.GridData对象 @param paramValues 参数值 @param from 开始行 @param count 返回的行数 @result 返回数据 */ function getGridData(paramValues, from, count) { //通过 paramValues.get("参数ID") 获取参数值对象(包含value与displayValue属性) var val = paramValues.get("PostId"); var url = new URL('https://jsonplaceholder.typicode.com/posts/' + val.value) var conn = url.openConnection(); var json; try { json = StringUtil.readFromStream(conn.getInputStream(), "UTF-8"); } finally { conn.disconnect(); } // eval动态执行结果,将字符串转成json、数组等类型 json = eval('(' + json + ')'); // 返回结果必须是一个二维数组 var result = [] if (Array.isArray(json)) { // 如果接口返回是一个数组,那直接赋值给data,如果不是,从json中获取对应数组,赋值给data,如var data = json['data']; var data = json; for (var k = 0; k < data.length; k++) { var row = []; for (var i = 0; i < returnDesc.length; i++) { row.push({ value: data[k][returnDesc[i].id], displayValue: data[k][returnDesc[i].id] }) } result.push(row); } } else { var row = []; for (var i = 0; i < returnDesc.length; i++) { row.push({ value: json[returnDesc[i].id], displayValue: json[returnDesc[i].id] }) } result.push(row); } return result; } /** 获取总行数,只在usePaging=true时会被调用,若无法获取总行数则不要定义这个方法 */ function getRowCount() { return 1; } /** 关闭查询对象 */ function close() {}
概览
内容工具
活动