Java 使用Jaspersoft和Spring迭代Json对象中的数组
我正在尝试将一个Json从spring解析到Jaspersoft,因此我做了以下工作:Java 使用Jaspersoft和Spring迭代Json对象中的数组,java,json,jasper-reports,Java,Json,Jasper Reports,我正在尝试将一个Json从spring解析到Jaspersoft,因此我做了以下工作: JSONObject json = new JSONObject(); json.put("t", tickets); json.put("totalAmount", df.format(totalAmount)); mapper.writeValue(jsonFile, json.toMap()); JsonDataSource source = n
JSONObject json = new JSONObject();
json.put("t", tickets);
json.put("totalAmount", df.format(totalAmount));
mapper.writeValue(jsonFile, json.toMap());
JsonDataSource source = new JsonDataSource(jsonFile);
JasperPrint print = JasperFillManager.fillReport(report, parameters, source);
这将为我创建一个Json,其中包含以下信息:
{
"t": [
{
"id": 5,
"number": 666,
"taxpayer": {
"name": "rodrigo",
"idAtmTaxpayer": null,
"cuit": "20408980675",
"email": "rodrigo.rodriguez@marandu.com.ar"
}
}
],
"totalAmount": "195626,92"
}
所以,我的疑问是:我如何在Jaspersoft中显示这些信息,而不使用子报表
如果有人能帮助我,我将非常感激
Jasper中的jxrml是:
<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.16.0.final using JasperReports Library version 6.16.0-48579d909b7943b64690c65c71e07e0b80981928 -->
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="paidTicketsReport.jrxml" pageWidth="612" pageHeight="1008" whenNoDataType="AllSectionsNoDetail" columnWidth="572" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" isSummaryWithPageHeaderAndFooter="true" uuid="b92698d7-fb13-42ad-9def-91a4029def19">
<parameter name="gob_logo" class="java.lang.String"/>
<parameter name="ipa_logo" class="java.lang.String"/>
<queryString language="JSON">
<![CDATA[t]]>
</queryString>
<field name="id" class="java.lang.Long">
<fieldDescription><![CDATA[id]]></fieldDescription>
</field>
<field name="number" class="java.lang.Long">
<fieldDescription><![CDATA[number]]></fieldDescription>
</field>
<field name="nameTaxpayer" class="java.lang.String">
<fieldDescription><![CDATA[taxpayer.name]]></fieldDescription>
</field>
<field name="idAtmTaxPayer" class="java.lang.Long">
<fieldDescription><![CDATA[taxpayer.idAtmTaxPayer]]></fieldDescription>
</field>
<field name="cuitTaxpayer" class="java.lang.String">
<fieldDescription><![CDATA[taxpayer.cuit]]></fieldDescription>
</field>
<field name="emailTaxpayer" class="java.lang.String">
<fieldDescription><![CDATA[taxpayer.email]]></fieldDescription>
</field>
<field name="amount" class="java.lang.String">
<fieldDescription><![CDATA[amount]]></fieldDescription>
</field>
将表达式与字段相等的
TextFields
放入报告的某个栏位中,例如详细栏位
这对我有用。显然,因为您使用t作为数据的根,“totalAmount”字段将不起作用
<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.14.0.final using JasperReports Library version 6.14.0-2ab0d8625be255bf609c78e1181801213e51db8f -->
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="jsonTest" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="14c14d57-90eb-48b3-8c1c-cf5fa89e25ab">
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="jsonData"/>
<queryString language="json">
<![CDATA[t]]>
</queryString>
<field name="id" class="java.lang.Integer">
<property name="net.sf.jasperreports.json.field.expression" value="id"/>
<fieldDescription><![CDATA[id]]></fieldDescription>
</field>
<field name="number" class="java.lang.Integer">
<property name="net.sf.jasperreports.json.field.expression" value="number"/>
<fieldDescription><![CDATA[number]]></fieldDescription>
</field>
<field name="name" class="java.lang.String">
<property name="net.sf.jasperreports.json.field.expression" value="taxpayer.name"/>
<fieldDescription><![CDATA[taxpayer.name]]></fieldDescription>
</field>
<field name="idAtmTaxpayer" class="java.lang.String">
<property name="net.sf.jasperreports.json.field.expression" value="taxpayer.idAtmTaxpayer"/>
<fieldDescription><![CDATA[taxpayer.idAtmTaxpayer]]></fieldDescription>
</field>
<field name="cuit" class="java.lang.String">
<property name="net.sf.jasperreports.json.field.expression" value="taxpayer.cuit"/>
<fieldDescription><![CDATA[taxpayer.cuit]]></fieldDescription>
</field>
<field name="email" class="java.lang.String">
<property name="net.sf.jasperreports.json.field.expression" value="taxpayer.email"/>
<fieldDescription><![CDATA[taxpayer.email]]></fieldDescription>
</field>
<columnHeader>
<band height="30">
<staticText>
<reportElement x="0" y="0" width="95" height="30" uuid="dbf8388b-5025-4a17-807d-6c0a9a26d7f4">
<property name="com.jaspersoft.studio.spreadsheet.connectionID" value="43fb794c-b551-4cdf-8ca2-a6e5556583e1"/>
</reportElement>
<text><![CDATA[id]]></text>
</staticText>
<staticText>
<reportElement x="95" y="0" width="92" height="30" uuid="8a47733e-b942-4f36-9a86-607d7f2708c4">
<property name="com.jaspersoft.studio.spreadsheet.connectionID" value="5b03c677-664e-46be-b72d-b0945b895ab7"/>
</reportElement>
<text><![CDATA[number]]></text>
</staticText>
<staticText>
<reportElement x="187" y="0" width="92" height="30" uuid="c309a2e4-a787-4fef-9d57-5f67cfbe8a85">
<property name="com.jaspersoft.studio.spreadsheet.connectionID" value="1069cfbe-9bb4-4f30-a540-d111361ddb46"/>
</reportElement>
<text><![CDATA[name]]></text>
</staticText>
<staticText>
<reportElement x="279" y="0" width="92" height="30" uuid="965e14eb-cd9f-4882-a57d-cd67afe9df00">
<property name="com.jaspersoft.studio.spreadsheet.connectionID" value="ffd06315-cbb2-455d-908a-cb5b465e4a5d"/>
</reportElement>
<text><![CDATA[idAtmTaxpayer]]></text>
</staticText>
<staticText>
<reportElement x="371" y="0" width="92" height="30" uuid="8478944a-471a-464e-acb3-d8631608bb65">
<property name="com.jaspersoft.studio.spreadsheet.connectionID" value="4385b16b-71dd-4ad4-ad5f-f03e18328647"/>
</reportElement>
<text><![CDATA[cuit]]></text>
</staticText>
<staticText>
<reportElement x="463" y="0" width="92" height="30" uuid="22d39e8e-e230-4b28-86f8-06ba6aa95b0e">
<property name="com.jaspersoft.studio.spreadsheet.connectionID" value="9d594517-19e9-4187-9f77-ad7a0228557e"/>
</reportElement>
<text><![CDATA[email]]></text>
</staticText>
</band>
</columnHeader>
<detail>
<band height="30" splitType="Stretch">
<textField>
<reportElement x="0" y="0" width="95" height="30" uuid="45e4e430-802a-45de-95cf-5f199b5c8790">
<property name="com.jaspersoft.studio.spreadsheet.connectionID" value="43fb794c-b551-4cdf-8ca2-a6e5556583e1"/>
</reportElement>
<textFieldExpression><![CDATA[$F{id}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="95" y="0" width="92" height="30" uuid="e6e18897-08ce-4a2d-831b-429338ad5ee8">
<property name="com.jaspersoft.studio.spreadsheet.connectionID" value="5b03c677-664e-46be-b72d-b0945b895ab7"/>
</reportElement>
<textFieldExpression><![CDATA[$F{number}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="187" y="0" width="92" height="30" uuid="2b8f4467-21a0-4bf7-9575-6fb0b0222d3e">
<property name="com.jaspersoft.studio.spreadsheet.connectionID" value="1069cfbe-9bb4-4f30-a540-d111361ddb46"/>
</reportElement>
<textFieldExpression><![CDATA[$F{name}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="279" y="0" width="92" height="30" uuid="544e5c63-f8df-4a96-9391-827acd4a9c8f">
<property name="com.jaspersoft.studio.spreadsheet.connectionID" value="ffd06315-cbb2-455d-908a-cb5b465e4a5d"/>
</reportElement>
<textFieldExpression><![CDATA[$F{idAtmTaxpayer}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="371" y="0" width="92" height="30" uuid="87cf1ef2-db55-4a16-82ec-c838aa5606b2">
<property name="com.jaspersoft.studio.spreadsheet.connectionID" value="4385b16b-71dd-4ad4-ad5f-f03e18328647"/>
</reportElement>
<textFieldExpression><![CDATA[$F{cuit}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="463" y="0" width="92" height="30" uuid="2dc4fc4c-a687-4df0-bf4c-78bad2f76d20">
<property name="com.jaspersoft.studio.spreadsheet.connectionID" value="9d594517-19e9-4187-9f77-ad7a0228557e"/>
</reportElement>
<textFieldExpression><![CDATA[$F{email}]]></textFieldExpression>
</textField>
</band>
</detail>
</jasperReport>
将表达式与字段相等的
TextFields
放入报告的某个栏位中,例如详细栏位
这对我有用。显然,因为您使用t作为数据的根,“totalAmount”字段将不起作用
<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.14.0.final using JasperReports Library version 6.14.0-2ab0d8625be255bf609c78e1181801213e51db8f -->
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="jsonTest" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="14c14d57-90eb-48b3-8c1c-cf5fa89e25ab">
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="jsonData"/>
<queryString language="json">
<![CDATA[t]]>
</queryString>
<field name="id" class="java.lang.Integer">
<property name="net.sf.jasperreports.json.field.expression" value="id"/>
<fieldDescription><![CDATA[id]]></fieldDescription>
</field>
<field name="number" class="java.lang.Integer">
<property name="net.sf.jasperreports.json.field.expression" value="number"/>
<fieldDescription><![CDATA[number]]></fieldDescription>
</field>
<field name="name" class="java.lang.String">
<property name="net.sf.jasperreports.json.field.expression" value="taxpayer.name"/>
<fieldDescription><![CDATA[taxpayer.name]]></fieldDescription>
</field>
<field name="idAtmTaxpayer" class="java.lang.String">
<property name="net.sf.jasperreports.json.field.expression" value="taxpayer.idAtmTaxpayer"/>
<fieldDescription><![CDATA[taxpayer.idAtmTaxpayer]]></fieldDescription>
</field>
<field name="cuit" class="java.lang.String">
<property name="net.sf.jasperreports.json.field.expression" value="taxpayer.cuit"/>
<fieldDescription><![CDATA[taxpayer.cuit]]></fieldDescription>
</field>
<field name="email" class="java.lang.String">
<property name="net.sf.jasperreports.json.field.expression" value="taxpayer.email"/>
<fieldDescription><![CDATA[taxpayer.email]]></fieldDescription>
</field>
<columnHeader>
<band height="30">
<staticText>
<reportElement x="0" y="0" width="95" height="30" uuid="dbf8388b-5025-4a17-807d-6c0a9a26d7f4">
<property name="com.jaspersoft.studio.spreadsheet.connectionID" value="43fb794c-b551-4cdf-8ca2-a6e5556583e1"/>
</reportElement>
<text><![CDATA[id]]></text>
</staticText>
<staticText>
<reportElement x="95" y="0" width="92" height="30" uuid="8a47733e-b942-4f36-9a86-607d7f2708c4">
<property name="com.jaspersoft.studio.spreadsheet.connectionID" value="5b03c677-664e-46be-b72d-b0945b895ab7"/>
</reportElement>
<text><![CDATA[number]]></text>
</staticText>
<staticText>
<reportElement x="187" y="0" width="92" height="30" uuid="c309a2e4-a787-4fef-9d57-5f67cfbe8a85">
<property name="com.jaspersoft.studio.spreadsheet.connectionID" value="1069cfbe-9bb4-4f30-a540-d111361ddb46"/>
</reportElement>
<text><![CDATA[name]]></text>
</staticText>
<staticText>
<reportElement x="279" y="0" width="92" height="30" uuid="965e14eb-cd9f-4882-a57d-cd67afe9df00">
<property name="com.jaspersoft.studio.spreadsheet.connectionID" value="ffd06315-cbb2-455d-908a-cb5b465e4a5d"/>
</reportElement>
<text><![CDATA[idAtmTaxpayer]]></text>
</staticText>
<staticText>
<reportElement x="371" y="0" width="92" height="30" uuid="8478944a-471a-464e-acb3-d8631608bb65">
<property name="com.jaspersoft.studio.spreadsheet.connectionID" value="4385b16b-71dd-4ad4-ad5f-f03e18328647"/>
</reportElement>
<text><![CDATA[cuit]]></text>
</staticText>
<staticText>
<reportElement x="463" y="0" width="92" height="30" uuid="22d39e8e-e230-4b28-86f8-06ba6aa95b0e">
<property name="com.jaspersoft.studio.spreadsheet.connectionID" value="9d594517-19e9-4187-9f77-ad7a0228557e"/>
</reportElement>
<text><![CDATA[email]]></text>
</staticText>
</band>
</columnHeader>
<detail>
<band height="30" splitType="Stretch">
<textField>
<reportElement x="0" y="0" width="95" height="30" uuid="45e4e430-802a-45de-95cf-5f199b5c8790">
<property name="com.jaspersoft.studio.spreadsheet.connectionID" value="43fb794c-b551-4cdf-8ca2-a6e5556583e1"/>
</reportElement>
<textFieldExpression><![CDATA[$F{id}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="95" y="0" width="92" height="30" uuid="e6e18897-08ce-4a2d-831b-429338ad5ee8">
<property name="com.jaspersoft.studio.spreadsheet.connectionID" value="5b03c677-664e-46be-b72d-b0945b895ab7"/>
</reportElement>
<textFieldExpression><![CDATA[$F{number}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="187" y="0" width="92" height="30" uuid="2b8f4467-21a0-4bf7-9575-6fb0b0222d3e">
<property name="com.jaspersoft.studio.spreadsheet.connectionID" value="1069cfbe-9bb4-4f30-a540-d111361ddb46"/>
</reportElement>
<textFieldExpression><![CDATA[$F{name}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="279" y="0" width="92" height="30" uuid="544e5c63-f8df-4a96-9391-827acd4a9c8f">
<property name="com.jaspersoft.studio.spreadsheet.connectionID" value="ffd06315-cbb2-455d-908a-cb5b465e4a5d"/>
</reportElement>
<textFieldExpression><![CDATA[$F{idAtmTaxpayer}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="371" y="0" width="92" height="30" uuid="87cf1ef2-db55-4a16-82ec-c838aa5606b2">
<property name="com.jaspersoft.studio.spreadsheet.connectionID" value="4385b16b-71dd-4ad4-ad5f-f03e18328647"/>
</reportElement>
<textFieldExpression><![CDATA[$F{cuit}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="463" y="0" width="92" height="30" uuid="2dc4fc4c-a687-4df0-bf4c-78bad2f76d20">
<property name="com.jaspersoft.studio.spreadsheet.connectionID" value="9d594517-19e9-4187-9f77-ad7a0228557e"/>
</reportElement>
<textFieldExpression><![CDATA[$F{email}]]></textFieldExpression>
</textField>
</band>
</detail>
</jasperReport>
谢谢你,但我已经这么做了,并返回null,因为我无法识别Json对象中的属性“idAt纳税人”。我在JasperStudio中使用的数据与字段和表达式完全相同。当您传递数据源时,这可能是在运行时发生的。谢谢,但我已经这样做了,并返回null,因为我无法识别Json对象中的属性“idAt纳税人”。在JasperStudio中,它使用您的数据和完全相同的字段和表达式为我工作。当您传递数据源时,可能是在运行时。