Solved this: Now I only pass 1 parameter to my rapport, a json string with all my parameters as fields. I use a data adapter that match that string and replaced all the $P{xxxx} by $F{xxxx}. Then I use the JSON_INPUT_STREAM parameter of the report to cast that string to byte array input stream. In this json string, my lists object are described like this "LIST_SKILL": [ ["skill one", "value 1"], ["skill two", "value 2"], ["skill three", "value 3"]] Then on my list object, in the dataSet properties::JRDatasource expression ((net.sf.jasperreports.engine.data.JsonDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("LIST_SKILL") After that, my report is correctly generated in jaspersoft studio / server and with rest service call.