【发布时间】:2021-12-24 12:54:22
【问题描述】:
我正在尝试读取来自 Nifi 处理器的 json 数据,我使用下面的代码通过计算将一个键值更新到每条记录中,但我面临**list indices must be integers in <script> at line number 43** 问题。 .
当手动添加json file 时,同样的代码工作正常
我的代码是:
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):
finalResp = []
text = IOUtils.toString(inputStream, StandardCharsets.UTF_8)
data = json.loads(text)
newObj = data['priority']
for k in data:
resp = self.performCalculation(k)
finalResp.append(resp)
log.info(" newObj ",newObj)
log.info(" newObj ",newObj)
outputStream.write(bytearray(finalResp.encode('utf-8')))
def performCalculation(self,k):
a = int(k['a'])
b = int(k['b'])
log.info(a)
log.info(b)
total=sum((a,b))
log.info(total)
x = {"x":total}
k.update(x)
return k
flowFile = session.get()
if flowFile != None:
#flowFile = session.putAttribute(flowFile, "priority", "5")
priority = FlowFileParser()
session.write(flowFile,priority)
flowFile = session.putAttribute(flowFile, "filename", str(priority))
session.transfer(flowFile, REL_SUCCESS)
我的 json 文件有
[{
"a":1,
"b":2,
"id":1
},{
"a":1,
"b":2,
"id":2
}]
【问题讨论】:
-
乍一看,没有什么奇怪的,但请仔细检查您的语法和操作是否与 NiFi 用来执行纯 Python 脚本的 Jython 2.7.x 相比
-
我在你的 json 中没有看到任何对
data['priority']有效的东西 -
对于我后来使用的 nifi 东西,我也删除了,然后也面临同样的问题。我更改了脚本并且它正在工作。我更新了我的答案。
标签: python session apache-nifi