2015-06-02 4 views
0

У меня есть источник данных json с массивами внутри массивов. Я использую подзаголовки, которые имеют источник данных, полученный из использования выражения datasourceExpression и метода subdata() на главном источнике данных.Вложенные вложенные подписи jasper с json datasource

Моя проблема теперь переносит другой список в другой подзаголовок, я не хочу снова использовать подданные, мне нужно что-то сделать, это передать поле, содержащее текст json в виде строки из текущего подзаголовка в следующий subreport как источник данных 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»), теперь для итерации по вложенному массиву я установил поле «asignaturas» как тип «java.lang.Object».

Затем я добавить подотчет на детали группы, выбрав в «свойствах подотчета»: «Использовать выражение источника данных» и значение для выражения источника данных:

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

Тогда в подотчете я добавить поля в подробный диапазон (в этом примере поле «asignatura»), и он будет печатать вложенный массив соответственно для каждого узла основного массива.

 Смежные вопросы

  • Нет связанных вопросов^_^