Разбор JSON в скрипте NiFi Python - PullRequest
0 голосов
/ 19 февраля 2019

Я в основном получаю файл потока, и мне нужно получить значение ключа.

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 FlowFileParser(StreamCallback):
def __init__(self):
    pass
def process(self, inputStream, outputStream):
    text = IOUtils.toString(inputStream, StandardCharsets.UTF_8)
    obj = json.loads(text)
    newObj = obj['priority']
    outputStream.write(bytearray(newObj.encode('utf-8')))



flowFile = session.get()
if flowFile != None:
    #flowFile = session.putAttribute(flowFile, "priority", "5")
    priority = FlowFileParser()
    flowFile = session.putAttribute(flowFile, "filename", priority)
    session.transfer(flowFile, REL_SUCCESS)

Но я получаю следующее исключение "putAttribute (): 3-й аргумент не может быть приведен к строке в строке с номером 23"

Входной файл потока может быть как

{
"name": "martin",
"priority":"5"
}

Я просто хочу, чтобы имя файла было 5

1 Ответ

0 голосов
/ 19 февраля 2019

Вы пытаетесь передать объект в строковый аргумент:

priority = FlowFileParser()
flowFile = session.putAttribute(flowFile, "filename", priority)

приоритет - это ссылка на объект для FlowFileParser (), а третьим аргументом для метода putAttribute должна быть строка.

...