BIRT 如何用 rest api 接口获取 json 做报表
2021-01-04 21:29
标签:let line 文件 ram code 获得 bsp targe rest api BIRT中不能构建JSON数据源,虽然一些开源社区提供了解析JSON数据源插件,但几乎所有插件都非常底层,并且使用起来很不方便,因此并不值得推荐。 BIRT的常规办法是创建一个“脚本数据源”,在该脚本源上连接到URL并自行解析结果,但脚本写起来非常麻烦,而且工作量很大。 比如要处理这么个场景:根据传入参数,调用REST API,返回嵌套的JSON数据,部分数据格式如下: [ { "id": 1000, "content": "It is too hot", "comment": [ { "author": "joe", "score": 3, "comment": "just so so!" }, { "author": "jimmy", "score": 5, "comment": "cool! good!" } ] } ... ] 期望解析后的效果: BIRT使用open()方法创建脚本化数据源,如下所示: ... importPackage(Packages.java.io); importPackage(Packages.java.net); var param= params["industryname"].value; var inStream = new URL("http://yourapi/endpoint/" + param).openStream(); var inStreamReader = new InputStreamReader(inStream); var bufferedReader = new BufferedReader(inStreamReader); var line; var result = ""; while ((line = bufferedReader.readLine()) != null) result += line; inStream.close(); var json = JSON.parse(result); vars["HTMLJSON"] = json; logger.warning (result); ... 建议使用集算器,它将HTTP服务的url串的返回结果封装成文件流,可直接解析JSON格式字符串并结构化为序表。集算器精心设计了一套集合运算领域的函数库,以应对结构化后的各类运算,比如分组、排序、过滤、聚合、连接等,不再需要第三方数据库来协助。比如上面的问题,集算器脚本只需3行: A 1 =httpfile("http://yourapi/endpoint/servlet/testServlet?table=blog&type=json") 2 =json(file(A1).read()) 3 =A2.news(comment;id,content,${A2.comment.fname().concat@c()}) 最后将计算结果返回给BIRT的DataSet进行报表展现。从此示例来看,相比较于常规办法,实现同样的算法只需更少的代码,分步执行调试也方便。 其实还有很多类似的计算问题不太方便,但有集算器SPL的辅助却很简单,感兴趣可以参考:JSON数据计算与入库 集算器提供了JDBC驱动,可以很方便的与BIRT等报表工具集成,BIRT调用SPL脚本有使用和获得它的方法。 关于集算器安装使用、获得免费授权和相关技术资料,可以参见如何使用集算器。 BIRT 如何用 rest api 接口获取 json 做报表 标签:let line 文件 ram code 获得 bsp targe rest api 原文地址:https://www.cnblogs.com/xmilu/p/13188686.html
文章标题:BIRT 如何用 rest api 接口获取 json 做报表
文章链接:http://soscw.com/index.php/essay/40117.html