title: How to pass json data from main report to subreport Jaspersoft Studio
body: <p>I want to create a report like this
  <a href="https://i.stack.imgur.com/Ue5JD.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/Ue5JD.png" alt="enter image description here"></a></p>
  
  <p>I have the structure of the tables created, in the page 2 the source data is a JSON with a list of products and its properties.
  I want to shows the JSON data into the tables, actually have a subreport with the tables, but don't know how pass the JSON data to the subreport and its fill according to the productList key in JSON data. The report fills from a java class that receives the data from the user.</p>
  
  <p>I don't know how to fill the tables of the page 2, can anyone helps me?</p>
  
  <p>This is my code in Jaspersoft Studio 6.10</p>
  
  <p>Main Report</p>
  
  <pre><code>https://app.box.com/s/qhl0158r03g9jowrhofojd6pkodwkojs
  </code></pre>
  
  <p>SubReport</p>
  
  <pre><code>https://app.box.com/s/gt5h19qxj1gs5ldghvajd3umx720dwgp
  </code></pre>
  
  <p>Java class (Fill the report)</p>
  
  <pre><code>    ...
      JasperReport jr = null;
  
      //DATA TO THE REPORT
      String nombreCliente = "Caracol Radio LTDA.";
      String contactoCliente = "3694100";
      String nombreUsuario = "David";
      String apellidoUsuario = "Torres";
      String cargoUsuario = "Aux. Administrativo";
      String nombreEmpresaCondicionesComerciales = "BIO BOLSA";
      String tipoCuentaCondicionesComerciales = "Ahorros";
      String bancoCondicionesComerciales = "Davivienda";
      String numeroCuentaCondicionesComerciales = "481670000670";
      String domicilioCondicionesEntrega = "Bogotá";
      String simboloMonedaCondicionesEntrega = "$";
      String embalajeSuperiorCondicionesEntrega = "800.000";
      String impuestoCondicionesEntrega = "iva";
      String domicilioFueraCondicionesEntrega = "iva";
      String capacidadInstaladaOrdenProduccion = "1.000.000";
  
      String tipoEmpresa = "S.A.S";
      String regimenEmpresa = "Regimen Comun";
      String nitEmpresa = "900.390.537-1";
      String telefonosEmpresa = "Tels: (57) (1) 7137516 EXT 1142 – 7138731 - 2033205 Cel: (57) 300 275 45 51";
      String correoWebEmpresa = "Web: www.biobolsa.com.co   E-mail: pchacon@biobolsa.com.co";
      String direccionEmpresa = "Fábrica CRA 57 NO 45 A – 52 SUR LA SEVILLANA";
      String ciudadEmpresa = "Bogotá D.C, Colombia";
  
      Map&lt;String, Object&gt; parametros = new HashMap&lt;String, Object&gt;();
      parametros.put("NombreCliente", nombreCliente);
      parametros.put("ContactoCliente", contactoCliente);
      parametros.put("NombreUsuario", nombreUsuario);
      parametros.put("ApellidoUsuario", apellidoUsuario);
      parametros.put("CargoUsuario", cargoUsuario);
      parametros.put("TipoEmpresa", tipoEmpresa);
      parametros.put("Regimen", regimenEmpresa);
      parametros.put("Nit", nitEmpresa);
      parametros.put("Telefonos", telefonosEmpresa);
      parametros.put("WebCorreo", correoWebEmpresa);
      parametros.put("Direccion", direccionEmpresa);
      parametros.put("Ciudad", ciudadEmpresa);
      parametros.put("NombreEmpresaCondicionesComerciales", nombreEmpresaCondicionesComerciales);
      parametros.put("TipoCuentaCondicionesComerciales", tipoCuentaCondicionesComerciales);
      parametros.put("BancoCondicionesComerciales", bancoCondicionesComerciales);
      parametros.put("NumeroCuentaCondicionesComerciales", numeroCuentaCondicionesComerciales);
      parametros.put("DomicilioCondicionesEntrega", domicilioCondicionesEntrega);
      parametros.put("SimboloMonedaCondicionesEntrega", simboloMonedaCondicionesEntrega);
      parametros.put("EmbalajeSuperiorCondicionesEntrega", embalajeSuperiorCondicionesEntrega);
      parametros.put("ImpuestoCondicionesEntrega", impuestoCondicionesEntrega);
      parametros.put("DomicilioFueraCondicionesEntrega", domicilioFueraCondicionesEntrega);
      parametros.put("CapacidadInstaladaOrdenProduccion", capacidadInstaladaOrdenProduccion);
  
      try {
          jr = JasperCompileManager.compileReport("PATH\\TO\\REPORT\\ReporteBiobolsa.jrxml");
          JasperPrint jp = JasperFillManager.fillReport(jr, parametros, new JREmptyDataSource());
          JasperExportManager.exportReportToPdfFile(jp, "PATH\\TO\\EXPORT\\PDFBiobolsa.pdf");
  
  
          return Response
                  .status(Response.Status.OK)
                  .entity("OK.......!!")
                  .build();
      } catch (JRException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
  
          return Response
                  .status(Response.Status.INTERNAL_SERVER_ERROR)
                  .entity("ERROR.......!!")
                  .build();
      }
  </code></pre>
  
  <p>JSON data</p>
  
  <pre><code>{
  "productList": [{
              "productNumber": 1,
              "modelo": "Bolsa Deportiva Plana",
              "tela": "Tafeta",
              "dimensiones": "40x35",
              "destino": "Bog, D.C",
              "accesoriosModelo": [{
                  "nombre": "Cordon"
              },{
                  "nombre": "Accesorio 2"
              },{
                  "nombre": "Accesorio 3"
              }],
              "accesoriosAdicionales": [{
                  "nombre": "Bolsillo (30x40)"
              },{
                  "nombre": "Accesorio Adicional 2"
              },{
                  "nombre": "Accesorio Adicional 3"
              }],
              "estampado": [{
                  "nombre": "Cara Frontal – 1 Tinta"
              },{
                  "nombre": "Cara Posterior – 1 Tinta"
              },{
                  "nombre": "Estampado 3"
              }],
              "observaciones": "Observacion de Prueba",
              "cantidad": 500,
              "vrUnitario": 1200,
              "subTotal": 600000,
              "iva": 50000,
              "total": 650000
          },
          {
              "productNumber": 2,
              "modelo": "Bolsa Deportiva",
              "tela": "Otra",
              "dimensiones": "50x20",
              "destino": "Bog, D.C",
              "accesoriosModelo": [{
                  "nombre": "Cremallera"
              },{
                  "nombre": "Accesorio 2"
              },{
                  "nombre": "Accesorio 3"
              }],
              "accesoriosAdicionales": [{
                  "nombre": "Botones"
              },{
                  "nombre": "Accesorio Adicional 2"
              },{
                  "nombre": "Accesorio Adicional 3"
              }],
              "estampado": [{
                  "nombre": "Cara Posterior – 1 Tinta"
              }],
              "observaciones": "Observacion de Prueba",
              "cantidad": 400,
              "vrUnitario": 900,
              "subTotal": 360000,
              "iva": 40000,
              "total": 400000
          }
      ]
  }
  </code></pre>