2015-06-02 37 views
0

我有一个json数据源与数组内的数组,我使用的子报表具有使用datasourceExpression和主数据源上的'subdata()'方法派生的数据源。使用json数据源嵌套的jasper子报表

我现在的问题是将另一个列表传递给另一个子报表,我不想再次使用子数据,我需要做的是将包含json文本的字段作为字符串从当前子报表传递到下一个子报表作为json数据源。

有没有人知道这是如何实现的?

我正在使用iReport 5.6.0创建JasperReports的报告。

回答

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”),现在要在嵌套数组上进行迭代,我设置类型为“java.lang.Object”的字段“asignaturas”。

然后,添加上详细信息区域子报表,在“子报表属性”选择:在我添加子报表

new net.sf.jasperreports.engine.data.JsonDataSource(new ByteArrayInputStream($F{asignaturas}.toString().getBytes()),"") 

然后: “使用数据源表达”为数据源表达和值(在本例中是字段“asignatura”),它将相应地为主数组的每个节点打印嵌套数组。