用于表格字段的JsonDataSource获取空Jasper报告

问题描述:

我是jasper报告的新手。 我想从一个儿子文件,其中包含一些信息,如name,class等和数组marks生成PDF。我试图将标记数组呈现为表格。我的JSON是用于表格字段的JsonDataSource获取空Jasper报告

{"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" 
       }, 

       ] 
}} 

我已经给subdatasource表达

<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中传递数组的密钥。因此,dataSourceExpression应该像

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

注意 “标记” 参数subDataSource()方法