如何在Jasper Studio 6.21.5中获取JSON对象的嵌套数据
JasperReports JSON子数据源问题解决
你遇到的核心问题是误用了XML数据源的API处理JSON数据,同时内置函数SUB_DATA_SOURCE()并不适配JSON数据源场景。以下是针对性的解决步骤:
错误原因
你使用的net.sf.jasperreports.engine.data.JRXmlDataSource是专门处理XML数据源的类,和JSON数据源完全不兼容,这直接导致了报错。而SUB_DATA_SOURCE()函数通常是XML数据源的内置函数,同样不适用于JSON数组的子数据源创建。
正确解决方案
针对你的JSON结构,需要使用JSON专属的JRJsonDataSource来生成子数据源:
确认主数据源类型
确保报表的主数据源是JRJsonDataSource,配置时正确指向你的JSON数据(无需额外修改XML文件)。子数据源表达式写法
在子报表或列表组件的数据源表达式中,直接用JRJsonDataSource接收JSON数组字段:new net.sf.jasperreports.engine.data.JRJsonDataSource($F{ReceiptDetails})这里的
$F{ReceiptDetails}对应你JSON中的数组字段,JRJsonDataSource会自动解析这个数组作为子数据源。子报表字段映射
在子报表中添加与JSON数组元素匹配的字段:- 字段名设为
SNo,对应JSON中的"SNo"键 - 字段名设为
desc,对应JSON中的"desc"键
注意字段名大小写要和JSON键完全一致。
- 字段名设为
验证要点
- 移除所有和
JRXmlDataSource相关的表达式,避免混淆数据源类型 - 确保主数据源已正确加载JSON数据,能正常读取
name等顶层字段
内容的提问来源于stack exchange,提问作者munirot
相关产品推荐
相关产品推荐

