前言:做这个一定要有耐心,因为报表本就是数据杂糅到规整的过程,这篇心得会细讲每一步操作,如果只想着一眼到位,建议close tab

在公司中遇到项目,大概是一个这样的需求,有一个列表和一个标题,需要把这些数据一条条的遍历在报表中,然后加个标题,这些都是来自项目里的变量

那么json格式就应该是这样的,下面我会慢慢说,以例子说明,都会标注

解释:为什么是这样,第一,报表中有固定单一属性区域,和自动遍历区域,如下图,那么json的子分类肯定分为两类

{"dataa": [

{"country": "china"},

{"qq": "ok"},

{"qq": "no"}]

}

图中1.2.3步为基本配置,左边的三个字段,dataa(json里的一级key)、qq(二级集合里的key)、country(二级集合里的key)

但结果往往是出人意料的,具体java代码如下

1 @RequestMapping(value = "/list.html")2 publicString getOrderList(Model model) {3 InputStream input = new ByteArrayInputStream("\"dataa\": [{ \"country\":\"china\"},{ \"qq\":\"ok\" },{ \"qq\":\"no\" }] }".getBytes());4 JRDataSource jrDataSource = null;5 try{6 jrDataSource = new JsonDataSource(input, "dataa"); //第一个参数写入json数据,第二个参数,以该节点为报表解析节点7 } catch(JRException e) {8 e.printStackTrace();9 }10 //动态指定报表模板url

11 model.addAttribute("url", "/WEB-INF/jasper/report/cod1.jasper"); //编译好的报表文件

12 model.addAttribute("format", "pdf"); //报表格式

13 model.addAttribute("jrMainDataSource", jrDataSource);14 return "iReportView"; //对应jasper-defs.xml中的bean id

15

16 }

注意看我的json格式,两种类型读在dataa : [ xx, xx ] 内

按常理说,json格式 [ ] 内存放的应该是统一类型的序列集合,那么这时存放的既有遍历的集合也有单一属性,为什么是这样!

解释:这里实际上是做了封装,注意到集合里(指上文dataa对象里的内容,也就是[ ] 内的内容称为集合)的每个元素都有key=>value的形式了吧,在底层,他首先会遍历取这样的一个集合里,根据一样的key来判断是否是同一类的组合,然后进行遍历

说白了,就是这个集合里,如果key都一致,也就是都是qq的key的话,然后报表的遍历区里有qq这个字段,那么他就会自动遍历集合里所有的key=qq的组合,然后渲染在报表的一行行里

那么,你想在报表里取标题也很简单,直接将字段以集合里的,key命名即可取出

------------------------------------------------------------------------------------------------------------------------------------------------------------------

好了,接下来,就是你自己修饰报表的地方了,有什么不懂可以留言,一般常在,尽量帮你解决,伸出小手点个赞,谢谢

ireport参数传递json_ssm中iReport报表使用json数据源过程体会相关推荐

  1. ireport参数传递json_iReport 使用json 数据源

    前面几番折腾,已经安装好了iReport并且可以正常启动,这里面用的是5.6.0版本,现在记录下使用json作为数据源的操作步骤.这个图文教程超级详细,是__馋猫原创真的是原创 一.首先,创建json ...

  2. ireport 找不到子报表:Could not load object from location

    ireport中提供了自带属性$P{SUBREPORT_DIR}当我们新建.jrxml文件时默认$P{SUBREPORT_DIR}="存放当前设计的.jrxml文件的文件夹绝对路径" ...

  3. JasperReports+iReport在eclipse中的使用

    转载:http://blog.csdn.net/daming924/article/details/7402295 一.介绍 1)它可以PDF,HTML,XML等多种形式产生报表或动态报表,在新版本还 ...

  4. asp.net 报表页面模板_Stimulsoft ASP.NET MVC报表教程:在设计器中保存报表模板

    Stimulsoft Reports.Net最新版下载:https://www.evget.com/product/1071/download 本示例说明如何加载报表模板并在设计器中对其进行编辑. 首 ...

  5. 如何在报表开发工具 FastReport Online Designer 中处理报表的 5 个函数

    Fast Reports 产品的时代并没有停滞不前.每个月都会添加新的函数和对象,并改进和优化当前的代码.FastReport Online Designer中进行了一些更新,提高了可用性并简化了报表 ...

  6. .NET Core类库项目中如何读取appsettings.json中的配置

    这是一位朋友问我的问题,写篇随笔回答一下.有2种方法,一种叫丑陋的方法 -- IConfiguration ,一种叫优雅的方法 -- IOptions . 1)先看丑陋的方法 比如在 RedisCli ...

  7. android post json格式,Android中post请求传递json数据给服务端的实例

    在最近的项目中有个需求是这样的: 入参封装成JSON,EXAMPLE: { "uuid": "iamauuid","clientType": ...

  8. C# JSON使用过程中开发的小工具

    我在用JSON的过程中,经常要去看一下JSON的结构,而JSON串大不部分时候都是未格式化的数据,一次我不得不用一些网页上的在线解析和格式化工具来进行格式化查看,但是这些网页有时候并不好用:因此就结合 ...

  9. 在Flutter中解析复杂的JSON(一篇顶十篇)

    文章目录 JSON结构#1:简单 map 访问对象 Snippet #1 : imports **Snippet #2 : **加载Json Asset(可选)** Snippet #3 : 加载响应 ...

最新文章

  1. jquery和css3打造超梦幻的三维动画背景
  2. BCH再迎升级,真正比特币即将归来!
  3. Linux oracle数据库自动备份自动压缩脚本代码
  4. selenium2与python自动化5-iframe和163邮箱登录
  5. Apache+PHP+MySQL安装与配置
  6. c++17(33)-数值上下限、无穷、非数、中文字符串
  7. 梦断代码阅读笔记02
  8. python字符串之join
  9. 2021牛客多校4 - Tree Xor(线段树+异或区间拆分)
  10. Codeforces 821C - Okabe and Boxes
  11. PHP常用工具方法集...
  12. Linux下Socket的简单使用及最简化封装
  13. 相互宝正式宣布将于2022年1月28日关停
  14. 求解偏微分方程开源有限元软件deal.II学习--Step 11
  15. python无限锁屏_定时锁屏程序,Python祝你原理猝死!
  16. 【eNSP 华为模拟器】了解一下交换机原理和基础命令
  17. REST及RESTful原则
  18. 操作系统实验一 进程管理
  19. ToolScanner.java:8: 错误: 编码GBK的不可映射字符 //澹版槑绫? JAVA输出中文乱码
  20. 因為 because、since 、as、for、because of、owing to、due to

热门文章

  1. Kafka 源码分析之网络层(二)
  2. 给键盘上的enter设置事件_Selenium3 + Python3自动化测试系列——鼠标事件和键盘事件...
  3. SpringCloud 从菜鸟到大牛之三 服务拆分 理论
  4. Golang的协程池设计
  5. php的Snoopy类
  6. java正则表达式面试_【Java面试宝典】正则表达式
  7. Redis进阶高可用之哨兵
  8. 手工编译Linux内核rpm包
  9. 项目改用GoModules管理依赖的方法和经验总结
  10. Sphinx+Scws 搭建千万级准实时搜索应用场景详解