Jasper报告-将json IO流传递给子报告
我有一个带有子报告的工作报告,它使用json源文件作为数据源。在这个for subreport中,我将路径发送到subReportParameterJasper报告-将json IO流传递给子报告,json,jasper-reports,iostream,Json,Jasper Reports,Iostream,我有一个带有子报告的工作报告,它使用json源文件作为数据源。在这个for subreport中,我将路径发送到subReportParameternet.sf.jasperreports.json.source中的json文件 但是,如果我使用JSON IO流作为数据源而不是JSON源文件,那么如何将数据源传递给子报表?对于单个报表,JSON iostream运行良好,但无法理解如何在此处使用子报表。要使用InputStream中的JSON,我将使用url进行示例,因为这似乎是最可能的用法 用
net.sf.jasperreports.json.source中的json文件
但是,如果我使用JSON IO流作为数据源而不是JSON源文件,那么如何将数据源传递给子报表?对于单个报表,JSON iostream运行良好,但无法理解如何在此处使用子报表。要使用InputStream
中的JSON
,我将使用url进行示例,因为这似乎是最可能的用法
用于生成JsonDataSource的java代码
InputStream iostream = new URL("http://www.w3schools.com/website/Customers_MYSQL.php").openStream(); //Natrually this code is not need if you already have the iostrem
JsonDataSource dsSupReeport = new JsonDataSource(iostream);;
如何将其作为参数传递(让我们一次传递两个示例),传递整个JsonDataSource
或仅传递URL的字符串
值
在java中设置要传递给报表的参数(fillManager)
或者使用url的字符串值
<dataSourceExpression><![CDATA[new JsonDataSource(new URL($P{urlToDataSource}).openStream())]]></dataSourceExpression>
注意:如果主数据源中已经存在数据,则可以使用子数据集(不需要新的JSONDATASURCE)
<parameter name="datasource" class="net.sf.jasperreports.engine.data.JsonDataSource" isForPrompting="false"/>
<parameter name="urlToDataSource" class="java.lang.String" isForPrompting="false"/>
<dataSourceExpression><![CDATA[$P{datasource}]]></dataSourceExpression>
<dataSourceExpression><![CDATA[new JsonDataSource(new URL($P{urlToDataSource}).openStream())]]></dataSourceExpression>