Jasper报告-将json IO流传递给子报告

Jasper报告-将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进行示例,因为这似乎是最可能的用法 用

我有一个带有子报告的工作报告,它使用json源文件作为数据源。在这个for subreport中,我将路径发送到subReportParameter
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>