2017-03-01 74 views
0

我下面this教程傳遞JSON來JRXML。 我的虛擬json文件成功分析成好看的報告。的java iREPORT分享到人人傳遞JSON作爲表達

,但我有麻煩,同時通過JSON代碼JRXML。 在this教程有一個像圖片配置如下

datasource

我試圖通過JSON這樣

Map<String,Object> params = new HashMap<String,Object>(); 

String sPath = "/reports/master_standar_test_kertas.jrxml"; 
URL uReport = this.getClass().getResource(sPath); 

String sJson = "{\"parameter\": { \"status\":\"success\" },\"data\":[{\"kode\":\"001\",\"title\":\"ENAMEL\"}]}"; 
System.out.println((new JSONObject(sJson))); 
InputStream is = new ByteArrayInputStream(sJson.getBytes()); 
JsonDataSource source = new JsonDataSource(is); 

params.put(JsonQueryExecuterFactory.JSON_SOURCE, is); 

JasperReport jr = JasperCompileManager.compileReport(uReport.getPath()); 
JasperPrint jpPrint = JasperFillManager.fillReport(jr, params,source); 
JasperViewer jpView = new JasperViewer(jpPrint); 

,但我得到的錯誤

net.sf.jasperreports.engine.fill.JRExpressionEvalException: Error evaluating expression for source text: $P{net.sf.jasperreports.json.source} 

我的問題:

  1. 我相信我的代碼是錯誤的,但我不知道確切的錯誤代碼
  2. 我真的想了解jasperreport的是如何工作的,但我在Java中新,想要什麼就有什麼,我可以讀取任何教程...?

回答

1
  1. 我會嘗試設置JsonQueryExecuterFactory.JSON_INPUT_STREAM參數,而不是,因爲它似乎是你所需要的東西。該JsonQueryExecuterFactory.JSON_SOURCE參數只能是:

    • 在classpath
    • 從文件系統中的文件的資源,以絕對或相對路徑
    • 一個URL
  2. 大多數資源的熟悉JasperReports可以在Jaspersoft Community網站上找到。 您可能會發現有用:

+0

其實我只是3個月創建一個使用Java桌面應用程序,請給我舉例代碼使用JsonQueryExecuterFactory.JSON_INPUT_STREAM,只是一個小例子,請... ...? – yuda

+0

您的代碼應該這樣做,只是用'JsonQueryExecuterFactory.JSON_INPUT_STREAM',而不是'JsonQueryExecuterFactory.JSON_SOURCE' – Narcis

0

對於我有,我有我自己的解決方案的問題,也許有人需要的解決方案太。

這個代碼

params.put(JsonQueryExecuterFactory.JSON_SOURCE, is); 

我換成

params.put(JsonQueryExecuterFactory.JSON_SOURCE, "/path/to/file.json"); 

或者HTTP服務器的響應更換

params.put(JsonQueryExecuterFactory.JSON_SOURCE, "htttp://localhost:12345/data.json");