複数のキーと値のペアを持つJSONドキュメントを取得しているNifiフローに取り組んでいます。私はpython
とExecuteScript
プロセッサを使用しています。Nifi ExecuteScriptプロセッサを使用して複数のフローファイルを生成
私の目標は、JSON keys
にさまざまなURLベースを作成することです。キーは数値であり、彼らは次のようになります。
keys = [10200, 10201, 10202, ...]
私が欲しいのURLは3種類のものであり、彼らがこれらのようになります。
http://google.com/10200
http://bing.com/10200
http://yahoo.com/10200
私は私のkeys[]
をループにしようとしていますし、それに含まれる数値キーごとに3つのURLを作成します。私は次のコードを試しています:
リストから数字キーを読み取る-->
3つのURLを作成-->
フローファイルを吐き出します。
......と、リスト内の次の数字キーを読み、ループ保つ.....
私は、次のコードを持っていますが、私はそれを与えるときJSONはそれが右の何もしないflowfile今。誰かが私が間違っていることを教えてもらえますか?
import json
import java.io
from org.apache.commons.io import IOUtils
from java.nio.charset import StandardCharsets
from org.apache.nifi.processor.io import StreamCallback
class ModJSON(StreamCallback):
def __init__(self):
self.parentFlowFile = None
pass
def process(self, inputStream, outputStream):
text = IOUtils.toString(inputStream, StandardCharsets.UTF_8)
obj = json.loads(text)
flowfiles_list = []
outputStream.write(bytearray(json.dumps(obj.keys(), indent=4).encode('utf-8')))
for numerical_key in obj.keys():
# create 1 flowfile for each numerical_key. Each flow file should have 3 url attributes
flowFile = session.create(self.parentFlowFile)
if (flowFile != None):
flowFile = session.write(flowFile, "Does not matter")
flowFile = session.putAttribute(flowFile, "google", "http://google.com/"+ numerical_key)
flowFile = session.putAttribute(flowFile, "google", "http://bing.com/"+ numerical_key)
flowFile = session.putAttribute(flowFile, "google", "http://yahoo.com/"+ numerical_key)
flowfiles_list.append(flowFile)
for flow in flowfiles_list:
session.transfer(flow, REL_SUCCESS)