我有一个端点生成的以下json:
{
"data":
{
"id":"2",
"type":"mytype",
"attributes":
{
"header":
{
"name": "Name",
"code": "Code"
},
"dataset": [
{}]
},
"links":{"self":"http://localhost:1025/"}
}
}
我使用JSONAdapter并查询“数据集”属性来填充我的报告。它工作正常。
但我想添加使用json响应的“标头”部分的页面标头。
有没有没有通过参数传递这些信息的方法?
最佳答案
如果您愿意切换到JSONQL,则可以轻松实现。
考虑以下示例json:
{
"headers": {
"name": "Bla bla bla",
"date": "2016-01-01"
},
"dataset": [
{
"id": 1,
"val": 11
},
{
"id": 2,
"val": 22
}
]
}
如果要以“静态”方式访问“ headers.name”,则这将是相关的JRXML片段:
<queryString language="jsonql">
<![CDATA[dataset]]>
</queryString>
<field name="Name" class="java.lang.String">
<property name="net.sf.jasperreports.jsonql.field.expression" value="$.headers.name"/>
</field>
<field name="Id" class="java.lang.String">
<property name="net.sf.jasperreports.jsonql.field.expression" value="id"/>
</field>
<field name="Val" class="java.lang.String">
<property name="net.sf.jasperreports.jsonql.field.expression" value="val"/>
</field>
如果要从当前迭代访问“ headers.name”,则需要在“名称”字段中输入以下内容:
<field name="Name" class="java.lang.String">
<property name="net.sf.jasperreports.jsonql.field.expression" value="^{2}.headers.name"/>
</field>
从本质上讲,它转换为:在树上浏览两次,然后选择“ headers.name”
关于java - Jasper使用json响应填充页面标题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48914163/