前言
關于kettle的JSON字串的決議已經困擾我們很長時間了,我們知道kettle中有JSON輸入控制元件,但這個控制元件用的JSONPATH語法折騰了幾次都沒鬧明白,之前我們一直都是采取寫插件使用fastjson進行決議的,最近我考慮了一個新的決議思路,就是通過JavaScript控制元件撰寫JavaScript代碼進行決議,需要會一點JavaScript語法,但這樣就非常靈活了,也不用寫插件那么麻煩,可以肯定的是這種方式一定比JSON輸入控制元件更靈活,缺點就是要會點JavaScript,
樣例轉換

自定義常量資料

這個用戶定義json字串,實際業務中采用實際的資料來源即可,
運行效果如下:

JavaScript代碼

JavaScript代碼如下:
//JSON字串決議示例 //json來源 eval('var js='+LD); //需要輸出的欄位 var NAME = ""; var AGE = ""; //writeToLog("e", jd.data); //個性化處理,js就是一個JavaScript物件, for(var i=0;i<js.data.length;i++){ //var outputRow = Packages.org.pentaho.di.core.row.RowDataUtil.resizeArray( row, _step_.getOutputRowMeta().size()); var outputRow = new Array(_step_.getOutputRowMeta().size()); var data =https://www.cnblogs.com/Liyuting/p/ js.data[i]; //writeToLog("e", data.toString()); outputRow[_step_.getOutputRowMeta().indexOfValue("LD")] = LD; outputRow[_step_.getOutputRowMeta().indexOfValue("AGE")] = data.age; outputRow[_step_.getOutputRowMeta().indexOfValue("NAME")] = data.name; _step_.putRow(_step_.getOutputRowMeta(), outputRow); } var trans_Status = SKIP_TRANSFORMATION;
需要注意的是我們需要輸出的欄位需要在控制元件下方的欄位中添加欄位定義,
運行效果如下:

文本檔案輸出
這個就是一個結果輸出,實際業務中根據實際需要換成其他輸出目標物件,
如果這篇文章對你有幫助的話,評論或推薦下吧!(轉載請注明原作者!)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/331952.html
標籤:Java
