2015-08-13 3 views
1

У меня есть скрипт Python, который успешно конвертирует JSON в CSV при запуске в PyCharm. Когда я двигаюсь, что сценарий Python в трансформаторе Python в MuleSoft, скрипт завершается с ошибкой:Python vs Jython - MuleSoft

TypeError: unicode indices must be integers in at line number 10 (javax.script.ScriptException). Message payload is of type: String (org.mule.api.transformer.TransformerMessagingException). Message payload is of type: String

В чем разница между Python и Jython в этом контексте? Я не понимаю!

Вот Python:

import csv 
import io 

data = message.getInvocationProperty("my_JSON") 

output = io.BytesIO() 
writer = csv.writer(output) 

for item in data: 
    writer.writerow(([item['observationid'], item['fkey_observation'], item['value'], item['participantid'], item['uom'], item['finishtime'], item['starttime'], item['observedproperty'], item['measuretime'], item['measurementid'], item['longitude'], item['identifier'], item['latitude']])) 

result = output.getvalue() 

"my_JSON" является переменная, содержащая JSON.

ответ

1

Вы, кажется, забыли разобрать JSON, например: data = json.loads(data).

Без этого data является str, item является str длиной 1, и item['observationid'] поднимает TypeError.

+0

Cheers Rob, это сделал трюк! Хороший! –