Java 表字段的JsonDataSource获取空Jasper报告

Java 表字段的JsonDataSource获取空Jasper报告,java,json,jasper-reports,Java,Json,Jasper Reports,我不熟悉贾斯珀报告。 我正在尝试从一个子文件生成一个pdf,其中包含一些信息,如名称、类等和数组标记。我正在尝试将marks数组呈现为一个表。我的JSON是 {"data": {"name" : "Johny", "class" : "A2", "sub" : "cs", "interest" : "films", "marks" : [{ "subject" : "Maths", "mark" : "2

我不熟悉贾斯珀报告。 我正在尝试从一个子文件生成一个pdf,其中包含一些信息,如名称、类等和数组标记。我正在尝试将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>
正在填充其他字段,但表值将变为null。

从中找到答案 问题是我必须在dataSourceExpression中传递数组的键。因此,dataSourceExpression应该是

<dataSourceExpression><![CDATA[((net.sf.jasperreports.engine.data.JsonDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("marks")]]></dataSourceExpression>
注意marks参数到subDataSource方法

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