Incorporar objetos anidados del JSON en una tabla
Sigue estos pasos para mostrar datos anidados de un JSON en una tabla:
Paso a Paso:
-
Insertar componente Table
- En la pestaña Palette, arrastra el elemento Table al diseño
- Selecciona la opción “Create a Table using a new dataset”
-
Configurar Dataset para datos anidados
- Elige: “Create new dataset from connection/data source”
- Selecciona tu adaptador de JSON previamente configurado
- JSON Path: Especifica la ruta del array anidado (ej:
itemspara un JSON como{"items": [...]})$CODE_HEADER_PLACEHOLDER$// Ejemplo de estructura esperada { "orden": "123", "items": [ {"producto": "Laptop", "cantidad": 2}, {"producto": "Mouse", "cantidad": 5} ] } - Selecciona los campos a mostrar en la tabla (ej:
producto,cantidad)
-
Configuración avanzada del DataSource
- En la pestaña Group By:
- Selecciona: “Use a JRDataSource expression”
- Inserta este código para acceder al array anidado:
¿Qué hace esto?$CODE_HEADER_PLACEHOLDER$
// Transforma el DataSource principal al sub-conjunto de datos ((net.sf.jasperreports.engine.data.JsonDataSource)$P{REPORT_DATA_SOURCE}) .subDataSource("items") // Reemplaza "items" por tu key JSON
Crea un sub-DataSourceque apunta específicamente al array anidado, permitiendo iterar sobre sus elementos.
- En la pestaña Group By:
-
Vincular campos a la tabla
- Arrastra los campos del nuevo dataset desde el panel Outline a las columnas de la tabla
- Ajusta los encabezados y formatos según necesites
🔍 Validación Importante:
- Coherencia en nombres: El key usado en
subDataSource()(ej:"items") debe coincidir exactamente con el nombre del array en tu JSON - Tipos de datos: Asegúrate que los campos numéricos estén configurados como
java.lang.Integer/Doubleen las propiedades del campo
💡 Ejemplo de Uso en Tabla:
| Producto (Texto) | Cantidad (Número) |
|---|---|
$F{producto} | $F{cantidad} |