nifi ExecuteScript 文本数据 通过javascript 脚本 把文本 修改后导出

目录

介绍

view

javascript

小解

开始内容

结果



介绍

  • 在javascript 中 将第一个组件传来的文本转成json
  • 然后执行脚本操作该数据格式
  • 然后把数据写入到文本弄出来

 

view

nifi ExecuteScript 文本数据 通过javascript 脚本 把文本 修改后导出_第1张图片

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)
    }
}

 

 

开始内容

nifi ExecuteScript 文本数据 通过javascript 脚本 把文本 修改后导出_第2张图片

结果

nifi ExecuteScript 文本数据 通过javascript 脚本 把文本 修改后导出_第3张图片

 

 

 

 

 

ok

 

 

 

持续更新

 

 

 

 

你可能感兴趣的:(nifi,ExecuteScript)