使用点表示法访问具有嵌套 JSON 数据的 Jaspersoft Report 字段失败

Accessing Jaspersoft Report fields with nested JSON data fails using dot notation

我想在 Jasper 报告中使用来自 DSpace REST API 的数据。我已成功创建类型为“JSON 文件”的数据适配器并提供资源 URL 并将 GET 设置为请求类型。当我在报告中使用该数据适配器时,我可以编辑它的选项,当我在 Jaspersoft Studio 中单击“读取字段”时,我会看到根据我的请求嵌套 JSON 对象的树,正如预期的那样。

我现在想在我的报告字段中使用不同级别的 JSON。这适用于顶级值,但是,当我尝试使用点表示法访问嵌套值时,报告中未显示任何数据。

示例:

<field name="sections.publications_result.dc.title.value" class="java.lang.String">
    <property name="net.sf.jasperreports.jsonql.field.expression">
        <![CDATA[sections.result.dc.title.value]]>
    </property>
</field> 

如何获取嵌套值?

问题是您的 JSON 回复的名称中有点 (.)。我想 Jasper 假定每个点表示一个子级别。您需要“转义”那些带有点的标识符。

例如,如果 dc.title 是一个标识符,

sections.result.dc.title.value

需要改为

sections.result["dc.title"].value 

在您的“字段表达式”中。