除非Python脚本解析JSON

问题描述 投票:0回答:1

我基本上收到一个流文件,我必须得到一个键的价值。

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个arg不能被强制转换为第23行的字符串”

输入流文件可以是

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

我只想要文件名为5

python jython apache-nifi
1个回答
2
投票

您正在尝试将对象传递给字符串参数:

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

priority是对FlowFileParser()的对象引用,putAttribute的第三个参数需要是一个字符串。

© www.soinside.com 2019 - 2024. All rights reserved.