簡體   English   中英

如何在沒有前綴'u'代碼的情況下python Nifi ExecuteScript返回屬性?

[英]How to Nifi ExecuteScript return attribute without prefix 'u' code python?

我有一個傳入的json數據,我將ExecuteScriptPython代碼一起使用以提取此json數據的鍵和值,然后將其放入Attribute中。 這是我的代碼:

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 StreamCallback(StreamCallback):

    def __init__(self):
        pass

    def process(self, inputStream, outputStream):
        text = IOUtils.toString(inputStream, StandardCharsets.UTF_8)
        data = json.loads(text)
        for key in data:
            first = key
            break
        content = data[first]
        viewFlowFile = session.create()
        viewFlowFile = session.putAllAttributes(viewFlowFile,{'project': str(first), 'content': str(content)})
        session.transfer(viewFlowFile, REL_SUCCESS)
flowFile = session.get()
if flowFile != None:

    flowFile = session.write(flowFile, StreamCallback())
    session.transfer(flowFile, REL_FAILURE)
    session.commit()

當我運行Job時, ExecuteScript返回帶有前綴'u'的字符串。

我的輸入:

{“ project_1”:{“ device_code”:“ V001”,“ line_code”:“ Anodiziing 12L”}}

以及內容屬性的輸出:

{u'device_code':u'V001',u'line_code':u'Anodiziing 12L'}

我也嘗試添加

#!/usr/bin/python3

在正文代碼的標頭上。 但是沒有變化。

我的問題是如何使用ExecuteScript Nifi正確返回不帶前綴'u'的字符串?

更新:我們需要將數據類型從字典轉換為字符串。 使用json.dumps(content)代替str(content)和輸出將沒有前綴'u'。

JSON字符串是Unicode。 u''只是表明您正在打印的詞典包含Unicode字符串。 如果您不想看到它們,請直接打印字符串。 如果您運行的是Python 3,它將不使用u''作為Unicode字符串,因為它們是默認字符串,但是您會看到b''作為字節字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM