мой JSON выглядит следующим образом
"values": [
{
"purchase": {
"name":"bags"
},
"weekSpend": [
{
"weekStartDate": 20181105,
"spend":100
},
{
"weekStartDate": 20181112,
"spend":200
}
]
},
{
"purchase": {
"name":"shoes"
},
"weekSpend": [
{
"weekStartDate": 20181105,
"spend":100
},
{
"weekStartDate": 20181112,
"spend":200
}
]
},
]
Я хочу отобразить сетку, где строки
название продукта и (столбцы по недельной давности)
Я следовал методике, представленной в Как показать столбец в Crosstab, даже если данные отсутствуют
Однако название продукта указано в строке, но в столбце отображается только первый столбец.
мой набор данных выглядит следующим образом
<queryString language="jsonql">
<![CDATA[]]>
</queryString>
<field name="productName" class="java.lang.String">
<property name="net.sf.jasperreports.jsonql.field.expression" value="product.name"/>
<fieldDescription><![CDATA[product.name]]></fieldDescription>
</field>
<field name="weekStartDate" class="java.lang.String[]">
<property name="net.sf.jasperreports.jsonql.field.expression" value="weekSpend.weekStartDate"/>
</field>
<group name="activityDateGroup">
<groupExpression><![CDATA[$F{weekStartDate}]]></groupExpression>
</group>
мой источник данных кросс-данных выглядит следующим образом
<crosstabDataset isDataPreSorted="true">
<dataset>
<datasetRun subDataset="crossTabDataSet" uuid="e7b27508-8a48-4785-a48e-c646249df9a9">
<dataSourceExpression><![CDATA[((net.sf.jasperreports.engine.data.JsonQLDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("..values(@size > 0).*")]]></dataSourceExpression>
</datasetRun>
</dataset>
</crosstabDataset>
, а экспрессия бакса - на недельной дате.
При использовании JsonQL по-прежнему отображается только первый столбец
Как мне получить список столбцов, основанный на недельном сроке от итерации от корневого узла.
Я использую Jasper Studio 6.5.
Спасибо
Anjana.