2017-04-01 16 views
0

ジャスパーレポートが新しくなりました。 nameclassなどの情報と配列marksのような情報を含むsonファイルからpdfを生成しようとしています。マーク配列をテーブルとしてレンダリングしようとしています。 HereテーブルフィールドのJsonDataSourceが空になるJasperレポート

今、私は

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"); 

他のフィールドを取得している、などのJavaからこれらを呼び出す - 私のJSONは、私が

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

全jrxmlとしてsubdatasource式を与えている

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

       ] 
}} 

です値はNULLとして取得されています。

答えて

1

見つかった回答here dataSourceExpressionに配列のキーを渡す必要がありました。だから、dataSourceExpressionsubDataSource()方法に

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

注 "マーク" パラメータのようにする必要があり

関連する問題