目錄
介紹
- 在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
持續更新