2016-04-14 14 views
0

私はこのJSONのDSを持っている:私の.jrxmlファイルでJasper Reportsでjson subDataSourceを追加する適切な方法は何ですか?

{ 
    "customername":"home", 
    "workSiteRows":[ 
     { 
     "invoiceRows":[ 
      { 
       "candidateName":"name1", 
       "units":"13:00" 
      }, 
      { 
       "candidateName":"name2", 
       "units":"18:30" 
      } 
     ], 
     "workSiteName":"wsname1" 
     }, 
     { 
     "invoiceRows":[ 
      { 
       "candidateName":"name1", 
       "units":"13:00" 
      }, 
      { 
       "candidateName":"name2", 
       "units":"18:30" 
      } 
     ], 
     "workSiteName":"wsname2" 
     } 
    ] 
} 

私はサブレポートを定義していると私は、このサブレポートに渡すsubDataSourceを作成しようとしています。

<subreport isUsingCache="false"> 
    <reportElement x="0" y="10" width="555" height="30" uuid="b2d96c34-ad5d-4eb2-b218-43aad4e09282" /> 
    <dataSourceExpression><![CDATA[((net.sf.jasperreports.engine.data.JsonDataSource)$P{REPORT_DATA_SOURCE}).dataSource("workSiteRows")]]></dataSourceExpression> 
    <subreportExpression><![CDATA[$P{REPORT_DIR} + "\\invoice_ws_row.jasper"]]></subreportExpression> 
</subreport> 

私は次の例外得続ける:

java.lang.NoClassDefFoundError: org/codehaus/jackson/JsonNode java.lang.ClassNotFoundException: org.codehaus.jackson.JsonNode 

... エラー充填印刷を私は質問http://community.jaspersoft.com/questions/956036/caused-javalangclassnotfoundexception-orgcodehausjacksonjsonnode-exception-ireport

からの回答を使用してみました。しかし、それは動作しません。 現在、ジャックソンのコアがレポの下にある"com.fasterxml.jackson.core"

"org.codehaus.jackson.core"の間にiReportが依頼し続ける間、問題が発生します。

org.codehausの下にある古いバージョンのjackson coreを探して、それらをiReportクラスパスに追加しようとしましたが、それでも動作しません。 アイデア

答えて

1

通常、式をキャストする必要はありません。 試してみてください:<![CDATA[$P{REPORT_DATA_SOURCE}.subDataSource("workSiteRows")]]>

これは私のケースでは問題ありません。 あなたのケースでは、subDataSourceは配列ですが、多分tryとオブジェクトを使用することもできます。

+0

これは機能します。ありがとう。 *** facepalm ***、btw、Jasper Reportsの他の選択肢を使ったことがありますか? – ionutab

+1

ようこそ。私はJasper Reportsを知っているだけです。その無料で最高の利用可能なソリューションですが、それを使用するときにまだ多くの面白い瞬間があります:) – hering

+0

JasperSoft Studio 6.2.1を使用していて、キャストせずに 'subDataSource'メソッドを使用することはできません'net.sf.jasperreports.engine.data.JsonDataSource' –

関連する問題