nifi ExecuteScript 文本數據 通過javascript 腳本 把文本 修改後導出

目錄

介紹

view

javascript

小解

開始內容

結果



介紹

  • 在javascript 中 將第一個組件傳來的文本轉成json
  • 然後執行腳本操作該數據格式
  • 然後把數據寫入到文本弄出來

 

view

javascript
 



//讀取內容在寫入內容
var InputStreamCallback =  Java.type("org.apache.nifi.processor.io.InputStreamCallback");
var OutputStreamCallback =  Java.type("org.apache.nifi.processor.io.OutputStreamCallback");
var IOUtils = Java.type("org.apache.commons.io.IOUtils");
var StandardCharsets = Java.type("java.nio.charset.StandardCharsets");
 
var flowFile = session.get();

if(flowFile != null) {

    try {

        var text = "";

        // 讀取flowFile中內容
        session.read(flowFile,new InputStreamCallback(function(inputStream) {
            var str = IOUtils.toString(inputStream, StandardCharsets.UTF_8);
            

            //由JSON字符串轉換爲JSON對象
            var obj = JSON.parse(str); 
            obj.age = 18

            //將JSON對象轉化爲JSON字符
            text = JSON.stringify(obj); 
        }));

        // 向flowFile中寫入內容
        flowFile = session.write(flowFile, new OutputStreamCallback(function(outputStream) {
            outputStream.write(text.getBytes(StandardCharsets.UTF_8))
        }));

        session.transfer(flowFile, REL_SUCCESS)

    } catch(e) {
        log.error('Something went wrong', e)
        session.transfer(flowFile, REL_FAILURE)
    }
    
}

 

小解

  • 引入點東西
var InputStreamCallback =  Java.type("org.apache.nifi.processor.io.InputStreamCallback");
var OutputStreamCallback =  Java.type("org.apache.nifi.processor.io.OutputStreamCallback");
var IOUtils = Java.type("org.apache.commons.io.IOUtils");
var StandardCharsets = Java.type("java.nio.charset.StandardCharsets");
 
  • 定義 test

  • session.read讀出內容

  • 把文本轉json 

  • 然後修改內容

  • 在寫入流,讓後邊使用


var flowFile = session.get();
if(flowFile != null) {

    try {
        var text = "";
        // 讀取flowFile中內容
        session.read(flowFile,new InputStreamCallback(function(inputStream) {
            var str = IOUtils.toString(inputStream, StandardCharsets.UTF_8);
            
            //由JSON字符串轉換爲JSON對象
            var obj = JSON.parse(str); 
            obj.params1 = 100;
			obj.params2 = 200;
			obj.params3 = [1,2,3,4,4,5];
			obj.params6 = [{"a":"as","b":"bs"}];
			
            //將JSON對象轉化爲JSON字符
            text = JSON.stringify(obj); 
        }));

        // 向flowFile中寫入內容
        flowFile = session.write(flowFile, new OutputStreamCallback(function(outputStream) {
            outputStream.write(text.getBytes(StandardCharsets.UTF_8))
        }));
        session.transfer(flowFile, REL_SUCCESS)
    } catch(e) {
        log.error('Something went wrong', e)
        session.transfer(flowFile, REL_FAILURE)
    }
}

 

 

開始內容

結果

 

 

 

 

 

ok

 

 

 

持續更新

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章