2013-12-16 50 views
3

我正在使用Jasper Studio 5.5並嘗試使用JSON數據源創建報告。我的示例json文件看起來如下:Jasper Studio:JSON數據源與子陣列

{ 
"dto": [ 
    { 
     "item": { 
      "active": 1 
     }, 
     "itemProjects": [ 
      {"id": 1}, 
      {"id": 2} 
     ] 
    }, 
    { 
     "item": { 
      "active": 1 
     }, 
     "itemProjects": [ 
      {"id": 3}, 
      {"id": 4} 
     ] 
    } 
]} 

總結它:我有一個「dto」對象的數組。每個dto包含一個對象「item」和一個「itemProjects」數組。 使用Select-Query「dto」和Fields「item.active」允許我讀取「acttive」屬性。不過,我還沒有找到一種方法來讀取子數組中的屬性。我用不同的Select-Strings和Fieldnames嘗試過,但沒有成功。我也嘗試將數組作爲參數傳遞給子報表,但這也沒有奏效(生成的報表顯示空字段)。

有誰知道,如何正確讀取JSON數組中的數組中的數據?

此致敬意。

+0

您是否設法解決它? – endamaco

+0

相關http://stackoverflow.com/questions/34603844/how-to-create-multiple-tables-in-jasper-report-using-json-as-a-datasource/和http://stackoverflow.com/questions/39399255 /碧玉子報表-表示僅酮入門從最JSON-數據源的時嵌入 –

回答

1

我照顧我在JSON的對象結構,符合報告。從邏輯上講,你在主報告中接受完整的JSON。 然後我做一個子報告並告訴子報告只選擇JSon的一部分。然後

((net.sf.jasperreports.engine.data.JsonDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("data.bezirkResultatAbstimmungVorlage") 

data.bezirkResultatAbstimmungVorlage看起來像這樣的JSON:舉個例子,我的主要報告使用數據源表達式調用報表

"data": 
{ 
    "bezirkResultatAbstimmungVorlage": 
    [ 
     { 
      "vorlageNummer": "4", 
      "offiziellerAbstimmungBezeichnung": "Ja für Mundart im Kindergarten", ... ... ... 

然後我選擇這部分領域子報表中的json。如果你把這些字段放在細節帶中,碧玉將自動循環遍歷你的json數組的所有元素。

你描述的方式實際上應該工作。請確保您在「數據集和查詢對話框」中包含json作爲數據源。