java - 表字段的 JsonDataSource 获取空 Jasper 报告

标签 java json jasper-reports

我是 jasper 报告的新手。 我正在尝试从子文件生成 pdf,其中包含一些信息,例如 nameclass 等和数组 marks。我正在尝试将标记数组呈现为表格。我的 JSON 是

{"data": {"name" : "Johny",
    "class" : "A2",
    "sub" : "cs",
    "interest" : "films",
    "marks" : [{
               "subject" : "Maths",
               "mark" : "24",
               "grade" : "A",
               "remarks" : "",
               "slNo" : "1"
               },
               {
               "subject" : "English",
               "mark" : "24",
               "grade" : "A",
               "remarks" : "",
               "slNo" : "2"
               },

               ]
}}

我已将子数据源表达式指定为

<dataSourceExpression><![CDATA[((net.sf.jasperreports.engine.data.JsonDataSource)$P{REPORT_DATA_SOURCE}).subDataSource()]]></dataSourceExpression>

完整 jrxml - Here

现在我从 java 中调用这些,

File jsonFile = new File("/Volumes/Johny/Work/EclipseWorkspace/SecondReport/res/Marks.Json");
JasperDesign jasperDesign = JRXmlLoader.load(new File("/Volumes/Johny/Work/EclipseWorkspace/SecondReport/res/First.jrxml"));
JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);

parameters.put(JsonQueryExecuterFactory.JSON_INPUT_STREAM, new FileInputStream(jsonFile));
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters);
JasperExportManager.exportReportToPdfFile(jasperPrint, "/Users/johnykutty/Desktop/Sample2.pdf");

其他字段正在填充,但表值变为空。

最佳答案

here 找到答案 问题是我必须在 dataSourceExpression 中传递数组的 key 。因此,dataSourceExpression 应该类似于

<dataSourceExpression><![CDATA[((net.sf.jasperreports.engine.data.JsonDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("marks")]]></dataSourceExpression>

注意 subDataSource() 方法的“marks”参数

关于java - 表字段的 JsonDataSource 获取空 Jasper 报告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43157569/

相关文章:

java - DocumentBuilder 给出 java.net.MalformedURLException : no !/in 规范

java - 遇到意外文本时抛出什么异常?

c# - 在列表反序列化期间忽略缺失的类型

java - 如何将 jasper 报告生成的 PDF 文件保存在项目文件夹之一中

jasper-reports - iReports ORA-00911 : invalid character

java - Midi 时间戳(以秒为单位)

Javascript:反序列化对象和混合方法

php - 应用从数据库获取DATETIME-时区问题

java - 如何解决jasper报告中的uuid

java - Whitelabel 错误页面出现意外错误(type=Not Found,status=404)./WEB-INF/views/home.jsp