我有一个包含数组中数组的json数据源,我正在使用子报表,这些子报表具有使用datasourceExpression和' subdata()'来源的数据源。主数据源上的方法。
我现在的问题是将另一个列表传递给另一个子报表,我不想再次使用子数据,我需要以某种方式做的是将包含json文本的字段作为String从当前子报表传递到下一个子报告作为json数据源。
有谁知道如何实现这一目标?
我正在使用iReport 5.6.0创建 JasperReports 的报告。
答案 0 :(得分:0)
像这样的json:
{"records": { "Calificaciones":[ {"curso":1,"cursoCompleto":true,"asignaturas":[ {"asignatura":"Geometescriptiva 1"}, {"asignatura":"Geometescriptiva 2"}, {"asignatura":"Geometescriptiva 3"} ] } ] } }
我在主报告中添加查询“records.Calificaciones”以迭代第一个数组,并在主报告的详细信息区域中添加字段(curso,cursoCompleto,asignaturas)(在此示例中为“curso”字段将打印整数“1”),现在迭代嵌套数组我设置字段“asignaturas”,类型为“java.lang.Object”。
然后我在细节带上添加一个子报告,在“子报告属性”中选择: “使用数据源表达式”和数据源表达式的值:
new net.sf.jasperreports.engine.data.JsonDataSource(new ByteArrayInputStream($F{asignaturas}.toString().getBytes()),"")
然后在子报告中,我将字段添加到详细信息区域(在此示例中为字段“asignatura”),它将相应地打印嵌套数组,用于主数组的每个节点。