欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

在Java中辅助报表工具展现json

程序员文章站 2022-05-31 22:41:57
...

  JSON是半结构化数据,Java和报表工具只提供了简单解析的类库,很难进行深度计算。而使用集算器可降低JSON的计算难度。报表工具可将集算器脚本文件当做数据库存储过程执行,传入参数并用JDBC获得返回结果,详情参考集算器辅助报表工具的应用过程

  下面举例说明报表工具呈现JSON时常见的难题,以及集算器对应的解法。

  JSON分组汇总

  order.json存储着订单记录,现在要按时间段汇总每个月每个客户贡献的销售额,部分源数据如下:

在Java中辅助报表工具展现json
            
    
    博客分类: Java相关 javajson报表数据源集算器

 

  集算器代码:

在Java中辅助报表工具展现json
            
    
    博客分类: Java相关 javajson报表数据源集算器
 

  将JSON文件读为二维表,进行性条件查询,再进行分组汇总,其中argBegin、argEnd是报表参数。结果如下:

在Java中辅助报表工具展现json
            
    
    博客分类: Java相关 javajson报表数据源集算器
 

用列表呈现手机日志

  文件cellphone.log是JSON格式的手机日志,其中general和ping字段是子文档,分别有一条记录,cap_main字段也是子文档,有多条记录,现在需要用列表呈现cap_main,每条记录附加general的mtmodel 、networktype字段,以及ping的ssid字段。

  源数据如下:

在Java中辅助报表工具展现json
            
    
    博客分类: Java相关 javajson报表数据源集算器
 

  集算器代码:

在Java中辅助报表工具展现json
            
    
    博客分类: Java相关 javajson报表数据源集算器
 

  集算器读入JSON文件后,将保持其多层结构,并可用句号延多层结构访问字段。函数derive表示增加计算列。计算结果如下:

在Java中辅助报表工具展现json
            
    
    博客分类: Java相关 javajson报表数据源集算器
 

报表查询JSON多层子文档

  jsonstr.json的runners字段是子文档,子文档有3个字段:horseId、ownerColours、trainer,其中trainer含有下级字段trainerId。报表需要根据文档序号展现对应子文档的horseId、ownerColours、trainerId字段。

  源数据如下:

在Java中辅助报表工具展现json
            
    
    博客分类: Java相关 javajson报表数据源集算器
 

  集算器代码:

在Java中辅助报表工具展现json
            
    
    博客分类: Java相关 javajson报表数据源集算器
 

  读入JSON文件,按序号取出对应文档的runner字段(子文档),再从runner取出需要的字段,其中trainerId来自下级子文档。A3就是报表需要的数据,如下:

在Java中辅助报表工具展现json
            
    
    博客分类: Java相关 javajson报表数据源集算器
 

多层JSON分组表

  Cells.json是个多层嵌套的json文件,报表需要将其展示为分组表,分组字段为name、type、image. “xlink:href”,明细字段分为3个部分:custom. Identifier、custom. Classifier、custom. Output,这3部分都是结构相同的子文档,但文档数不同。

  源数据:

在Java中辅助报表工具展现json
            
    
    博客分类: Java相关 javajson报表数据源集算器
 

  集算器代码:

在Java中辅助报表工具展现json
            
    
    博客分类: Java相关 javajson报表数据源集算器
 

  集算器可将3种子文档合并在1个二维表中,用新字段ctype来区分,再将分组字段加入二维表,形成典型的“主子连接表”。合并后A2如下:

在Java中辅助报表工具展现json
            
    
    博客分类: Java相关 javajson报表数据源集算器
 

  根据集算器的计算结果,报表很容易就可以设计出分组表。

多个子报表不同JSON

  一张报表含有多个子报表,主报表和每个子报表使用不同的JSON文件,部分源数据如下:

在Java中辅助报表工具展现json
            
    
    博客分类: Java相关 javajson报表数据源集算器
 

  对于Jasper、Birt等单源报表工具,需要用JAVA类将多源数据统一为单源,集算器只需书写简单脚本:

在Java中辅助报表工具展现json
            
    
    博客分类: Java相关 javajson报表数据源集算器
 

  读入JSON并取出第1个字段,“.#1”表示第1个字段。给参数argFileName赋予不同的文件名,报表将会收到不同的数据集,如下:

在Java中辅助报表工具展现json
            
    
    博客分类: Java相关 javajson报表数据源集算器
 

连接txt和JSON

  structure.txt是tab分割的结构化文本,json.txt是非结构化的JSON串,structure.txt的第2列和json.txt的部分文本存在外键关系。部分数据如下:

  structure.txt

在Java中辅助报表工具展现json
            
    
    博客分类: Java相关 javajson报表数据源集算器
 

  Json.txt

在Java中辅助报表工具展现json
            
    
    博客分类: Java相关 javajson报表数据源集算器
 

  需要用报表呈现上述连接关系,期望表样如下:

在Java中辅助报表工具展现json
            
    
    博客分类: Java相关 javajson报表数据源集算器
 

  集算器代码:

在Java中辅助报表工具展现json
            
    
    博客分类: Java相关 javajson报表数据源集算器
 

  读入JSON文件,取出必要的字段和子文档形成二维表,然后新增计算列。A3如下:

在Java中辅助报表工具展现json
            
    
    博客分类: Java相关 javajson报表数据源集算器
 

  之后读入本文文件,再和A3进行join运算,并取出需要的字段,形成最终结果A6,如下:

在Java中辅助报表工具展现json
            
    
    博客分类: Java相关 javajson报表数据源集算器
 

  • 在Java中辅助报表工具展现json
            
    
    博客分类: Java相关 javajson报表数据源集算器
  • 大小: 51.7 KB
  • 在Java中辅助报表工具展现json
            
    
    博客分类: Java相关 javajson报表数据源集算器
  • 大小: 25.4 KB
  • 在Java中辅助报表工具展现json
            
    
    博客分类: Java相关 javajson报表数据源集算器
  • 大小: 19 KB
  • 在Java中辅助报表工具展现json
            
    
    博客分类: Java相关 javajson报表数据源集算器
  • 大小: 105.3 KB
  • 在Java中辅助报表工具展现json
            
    
    博客分类: Java相关 javajson报表数据源集算器
  • 大小: 16.3 KB
  • 在Java中辅助报表工具展现json
            
    
    博客分类: Java相关 javajson报表数据源集算器
  • 大小: 79.9 KB
  • 在Java中辅助报表工具展现json
            
    
    博客分类: Java相关 javajson报表数据源集算器
  • 大小: 76.5 KB
  • 在Java中辅助报表工具展现json
            
    
    博客分类: Java相关 javajson报表数据源集算器
  • 大小: 17.6 KB
  • 在Java中辅助报表工具展现json
            
    
    博客分类: Java相关 javajson报表数据源集算器
  • 大小: 15.2 KB
  • 在Java中辅助报表工具展现json
            
    
    博客分类: Java相关 javajson报表数据源集算器
  • 大小: 109.2 KB
  • 在Java中辅助报表工具展现json
            
    
    博客分类: Java相关 javajson报表数据源集算器
  • 大小: 54 KB
  • 在Java中辅助报表工具展现json
            
    
    博客分类: Java相关 javajson报表数据源集算器
  • 大小: 107.1 KB
  • 在Java中辅助报表工具展现json
            
    
    博客分类: Java相关 javajson报表数据源集算器
  • 大小: 68 KB
  • 在Java中辅助报表工具展现json
            
    
    博客分类: Java相关 javajson报表数据源集算器
  • 大小: 7.5 KB
  • 在Java中辅助报表工具展现json
            
    
    博客分类: Java相关 javajson报表数据源集算器
  • 大小: 41.1 KB
  • 在Java中辅助报表工具展现json
            
    
    博客分类: Java相关 javajson报表数据源集算器
  • 大小: 16.3 KB
  • 在Java中辅助报表工具展现json
            
    
    博客分类: Java相关 javajson报表数据源集算器
  • 大小: 24.1 KB
  • 在Java中辅助报表工具展现json
            
    
    博客分类: Java相关 javajson报表数据源集算器
  • 大小: 22 KB
  • 在Java中辅助报表工具展现json
            
    
    博客分类: Java相关 javajson报表数据源集算器
  • 大小: 46.9 KB
  • 在Java中辅助报表工具展现json
            
    
    博客分类: Java相关 javajson报表数据源集算器
  • 大小: 22.4 KB
  • 在Java中辅助报表工具展现json
            
    
    博客分类: Java相关 javajson报表数据源集算器
  • 大小: 20 KB