Jasper reports JasperReports导出到Json不处理“;空";正确地

Jasper reports JasperReports导出到Json不处理“;空";正确地,jasper-reports,Jasper Reports,当我在报告中使用Json元数据并导出为Json时,一个文本字段的表达式计算结果为null,而不是打印:{…“field”=null…正在打印:{…“field”=“null”…} JasperReports正在将null作为字符串“null”处理。如果我将字段设置为“空时为空”,则会打印:{…”字段“=”…} 有没有办法避免这种情况?通过将文本字段表达式复制为net.sf.jasperreports.export.JSON.data属性的表达式,JSON输出中可以有空值。如 <textFi

当我在报告中使用Json元数据并导出为Json时,一个文本字段的表达式计算结果为
null
,而不是打印:
{…“field”=null…
正在打印:
{…“field”=“null”…}

JasperReports正在将
null
作为字符串
“null”
处理。如果我将字段设置为“空时为空”,则会打印:
{…”字段“=”…}


有没有办法避免这种情况?

通过将文本字段表达式复制为net.sf.jasperreports.export.JSON.data属性的表达式,JSON输出中可以有空值。如

<textField>
    <reportElement ...>
        <property name="net.sf.jasperreports.export.json.path" value="FieldThatCanBeNull"/>
        <propertyExpression name="net.sf.jasperreports.export.json.data"><![CDATA[$F{FieldThatCanBeNull}]]></propertyExpression>
    </reportElement>
    <textFieldExpression><![CDATA[$F{FieldThatCanBeNull}]]></textFieldExpression>
</textField>


我后来发现,export.json.path+export.json.data几乎是偶然地解决了这个问题。这件事没用。我仍然不知道是什么。Afaik net.sf.jasperreports.export.json.repeat.value标志可以设置,例如,在组标题中显示的文本元素上,但您希望在json导出时在每条记录中重复其值。在这种情况下,如果未设置标志,则该值将仅出现在组的第一条记录中。此解决方案适用于字符串字段。但是,如果在export.json.data的表达式中放入整数字段,当其计算结果为null时,它将按预期打印null,否则将抛出强制转换异常,声称整数不能强制转换为字符串。属性值必须是字符串,不允许使用其他值类型。但是,如果您将整数值转换为字符串,例如使用$F{Field}.toString()作为属性表达式,则只要文本表达式本身最初是整数,它就会在JSON导出时转换回数字。是的,但这会产生不良的副作用。当数字不为null时,它将在JSON上被引用,当它为null时,null将是正确的(无引号)。