Member since
08-17-2016
9
Posts
1
Kudos Received
1
Solution
08-19-2016
08:49 AM
Hi We are experiencing trouble in flowFile = session.write(flowFile, ModJSON()) that line. javax.script.ScriptException: TypeError: write(): 1st arg can't be coerced to int
, byte[] in <script> at line number 64
Do you think what is the problem: 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):
pass
def process(self, inputStream, outputStream):
text = IOUtils.toString(inputStream, StandardCharsets.UTF_8)
obj = json.loads(text)
endorsements = obj['endorsement'].split(',')
categoryIds = obj['categoryIds'].split(',')
orderItemIds = obj['orderItemIds'].split(',')
seq_num = 0
seq_num1 = 1
for endorsement in endorsements:
if seq_num == 0 and seq_num1 == len(endorsements):
newObj = '[{"endorsement":' + endorsement \
+ ',"eventId":"' + obj['eventId'] \
+ '", "categoryId":"' + categoryIds[seq_num] \
+ '", "createDate":"' + obj['createDate'] \
+ '", "buyerId":"' + obj['buyerId'] \
+ '", "channel":"' + obj['channel'] + '", "city":"' \
+ obj['city'] + '", "orderItemId": "'+orderItemIds[seq_num]+'"}]'
seq_num += 1
seq_num1 += 1
elif seq_num == 0:
newObj = '[{"endorsement":' + endorsement + ',"eventId":"' \
+ obj['eventId'] + '", "categoryId":"' \
+ categoryIds[seq_num] + '", "createDate":"' \
+ obj['createDate'] + '", "buyerId":"' \
+ obj['buyerId'] + '", "channel":"' + obj['channel'
] + '", "city":"' + obj['city'] + '", "orderItemId": "'+orderItemIds[seq_num]+'"},'
seq_num += 1
seq_num1 += 1
elif seq_num1 == len(endorsements) :
newObj += '{"endorsement":' + endorsement + ',"eventId":"' \
+ obj['eventId'] + '", "categoryId":"' \
+ categoryIds[seq_num] + '", "createDate":"' \
+ obj['createDate'] + '", "buyerId":"' \
+ obj['buyerId'] + '", "channel":"' + obj['channel'
] + '", "city":"' + obj['city'] + '", "orderItemId": "'+orderItemIds[seq_num]+'"}]'
seq_num += 1
seq_num1 += 1
else:
newObj += '{"endorsement":' + endorsement + ',"eventId":"' \
+ obj['eventId'] + '", "categoryId":"' \
+ categoryIds[seq_num] + '", "createDate":"' \
+ obj['createDate'] + '", "buyerId":"' \
+ obj['buyerId'] + '", "channel":"' + obj['channel'
] + '", "city":"' + obj['city'] + '", "orderItemId": "'+orderItemIds[seq_num]+'"},'
seq_num += 1
seq_num1 += 1
outputStream.write(bytearray(newObj.encode('utf-8')))
flowFile = session.get()
if flowFile != None:
flowFile = session.write(flowFile, ModJSON())
flowFile = session.putAttribute(flowFile, 'filename',
flowFile.getAttribute('filename'
).split('.')[0] + '_translated.json'
)
session.transfer(flowFile, REL_SUCCESS)
session.commit()
... View more