我需要在后续json数据上设置什么连接表达式?
我在Jaspersoft Studio中生成了一个报告,并使用了一个Dataadapter,它是一个JSON Rest服务 对于简单值,一切都很好,但现在我的json结构中有了一个数组:我需要在后续json数据上设置什么连接表达式?,json,jasper-reports,Json,Jasper Reports,我在Jaspersoft Studio中生成了一个报告,并使用了一个Dataadapter,它是一个JSON Rest服务 对于简单值,一切都很好,但现在我的json结构中有了一个数组: { ... "A": { "B": [ { "C": "asdf" }, { "C": "xyz" } ] }, ...
{
...
"A": {
"B": [
{
"C": "asdf"
},
{
"C": "xyz"
}
]
},
... }
<subDataset name="Dataset" uuid="e3a0dc52-fba1-48fe-a067-84fae6a3448c">
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="Adapter"/>
<queryString language="json">
<![CDATA[A.B]]>
</queryString>
<field name="C" class="java.lang.String">
<property name="net.sf.jasperreports.json.field.expression" value="C"/>
<fieldDescription><![CDATA[C]]></fieldDescription>
</field>
</subDataset>
...
<jr:table xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd" whenNoDataType="AllSectionsNoDetail">
<datasetRun subDataset="Dataset" uuid="d44a71a8-7a49-440a-abbe-056276894f5c">
<connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression></dataSourceExpression>
</datasetRun>
<jr:column width="200" uuid="22888b9f-4eff-483e-8d7c-d0d6748e8ce7">
<jr:tableHeader style="Table_TH" height="30"/>
<jr:tableFooter style="Table_TH" height="30"/>
<jr:columnHeader style="Table_CH" height="30"/>
<jr:columnFooter style="Table_CH" height="30"/>
<jr:detailCell style="Table_TD" height="30">
<textField>
<reportElement x="0" y="0" width="200" height="30" uuid="b7df3878-ef55-4a7b-b89b-4083da2d5297"/>
<textFieldExpression><![CDATA[$F{C}]]></textFieldExpression>
</textField>
</jr:detailCell>
</jr:column>
</jr:table>
在我的报告中,我想创建一个表并列出其中所有C值。创建表和数据集后,我的报告如下所示:
{
...
"A": {
"B": [
{
"C": "asdf"
},
{
"C": "xyz"
}
]
},
... }
<subDataset name="Dataset" uuid="e3a0dc52-fba1-48fe-a067-84fae6a3448c">
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="Adapter"/>
<queryString language="json">
<![CDATA[A.B]]>
</queryString>
<field name="C" class="java.lang.String">
<property name="net.sf.jasperreports.json.field.expression" value="C"/>
<fieldDescription><![CDATA[C]]></fieldDescription>
</field>
</subDataset>
...
<jr:table xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd" whenNoDataType="AllSectionsNoDetail">
<datasetRun subDataset="Dataset" uuid="d44a71a8-7a49-440a-abbe-056276894f5c">
<connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression></dataSourceExpression>
</datasetRun>
<jr:column width="200" uuid="22888b9f-4eff-483e-8d7c-d0d6748e8ce7">
<jr:tableHeader style="Table_TH" height="30"/>
<jr:tableFooter style="Table_TH" height="30"/>
<jr:columnHeader style="Table_CH" height="30"/>
<jr:columnFooter style="Table_CH" height="30"/>
<jr:detailCell style="Table_TD" height="30">
<textField>
<reportElement x="0" y="0" width="200" height="30" uuid="b7df3878-ef55-4a7b-b89b-4083da2d5297"/>
<textFieldExpression><![CDATA[$F{C}]]></textFieldExpression>
</textField>
</jr:detailCell>
</jr:column>
</jr:table>
...
但当我点击预览时,我的表中从来没有任何数据
我很确定我的connectionExpression有问题,但我在文档中找不到正确表达式的任何线索。connectionExpression需要
((net.sf.jasperreports.engine.data.JsonDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("A.B")
因此,subDataSource
的参数需要是json结构中数组的路径