json - Jasper Reports - 从 JSON 解析 Double 值

标签 json jasper-reports double number-formatting

我在 Jaspersoft Studio 中使用 Jasper Reports 6.0.1。

我有一份带有子报告的报告。子报表正确地从主报表中获取数据集,其值如下:
- 字符串
- 双倍的

我在报告中正确显示 double 值时遇到问题。
所以 Json 包含如下值:

“双值”:“0.431”

子报表中正确定义了字段“doubleValue”:

<field name="doubleValue" class="java.lang.Double">
    <fieldDescription><![CDATA[doubleValue]]></fieldDescription>
</field>

报告中似乎正确使用了“doubleValue”:
<textField pattern="#0.00">
                <reportElement x="690" y="0" width="75" height="30" uuid="d265ebec-6fa7-421e-8d58-c7f2d32eea6b">
                    <property name="com.jaspersoft.studio.unit.width" value="px"/>
                </reportElement>
                <box>
                    <topPen lineWidth="0.1"/>
                    <bottomPen lineWidth="0.5"/>
                    <rightPen lineWidth="0.5"/>
                </box>
                <textElement>
                    <font size="9"/>
                </textElement>
                <textFieldExpression><![CDATA[$F{doubleValue}]]></textFieldExpression>
            </textField>

doubleValue 似乎在输出中的格式正确:
'3.00'

但:
字段值的来源是 3.41。
所以我已经深入检查了这些值,无论小数点分隔符后面是什么,所有值都被格式化为“x.00”。

请帮助我,我做错了什么?

我需要将数据正确导出到 XLSX(因此它知道单元格中有一个数字),我为此使用了以下选项:
<property name="net.sf.jasperreports.export.xls.detect.cell.type" value="true"/>

最佳答案

当小数点分隔符因本地化而改变时,经常会出现这些问题。 .(dot) 在美国是小数点分隔符,但在意大利,小数点分隔符是 ,(逗号)

但是 jasper 报告 (v 6) 应该可以毫无问题地处理这个问题,您的模式应该是美国格式,并且 jasper 报告将在 Locale.getDefault() 中导出格式(也在 excel 中应用正确的模式)。

所以应该有没有错与您的 jrxml .

但是请注意 JsonDataSource将使用 Locale.getDefault()格式所以如果你有意大利本地人 Double数 es. 12.234 将被解释为 12234(因此为千)。

在这种情况下,您需要设置 本地 JsonDataSource es.

JsonDataSource ds = new JsonDataSource(new File("example.json"));
ds.setLocale(Locale.US);

正确解析您的数字。

关于json - Jasper Reports - 从 JSON 解析 Double 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33996712/

相关文章:

python - 使用 celery 使用 AMQP 中的 json 数据

python - Jsonify 自定义对象列表

json - Perl 生成的 JSON 中的 UTF8 字符串在客户端损坏

java - 如何在 iReport 中使用 SQL 查询同一项目的多个 SUM

glassfish - JasperReports 编译报告

c - 如何在 while 循环中找到最大值和最小值 - c

java - Java 中的往返转换

javascript - JQuery Ajax POST - 请求正文未显示在原始 HTTP 请求中

java - JasperServer REST 客户端路径如何?

c - 如何在c中将一些long double转换为long int?