Apache Nifi:如何使用 Nifi 处理器将字符串 (text/plain) 转换为 JSON 类型?
Apache Nifi: How to convert string (text/plain) to JSON type using Nifi processor?
请指导我将字符串转换为 json 的正确组件
使用适当的 Nifi 处理器组件。
输入内容类型为字符串text/plain
{ productName : "tv", locationName: " chennai"}
EvaluateJsonPath 的输出仍然相同,因为作为输入发送的内容类型错误,我无法根据 json 路径评估 json 属性。
{
productName : "tv",
locationName: " chennai"
}
注意:尝试过的 SplitText、AttirtubesToJson 处理器无法实现所需的转换。
这是因为输入数据无效JSON。我在本地重新创建了这个流程,EvaluateJsonPath
的错误是
2017-08-22 10:20:21,079 ERROR [Timer-Driven Process Thread-5] o.a.n.p.standard.EvaluateJsonPath EvaluateJsonPath[id=0aec27af-015e-1000-fac5-4e0f455a10fe] FlowFile StandardFlowFileRecord[uuid=b903eeb0-8985-4517-910f-5e3bbbccb8dc,claim=StandardContentClaim [resourceClaim=StandardResourceClaim[id=1503421928125-1, container=default, section=1], offset=376, length=47],offset=0,name=91708717370829,size=47] did not have valid JSON content.
压缩为 [flowfile] 没有有效的 JSON 内容。处理器使用严格的验证器,您提供的输入无效 JSON。您需要使用文本操作或正则表达式将此内容更新为以下内容:
{"productName":"tv", "locationName":"chennai"}
完成此操作后(通过 ReplaceText
等),EvaluateJsonPath
处理器将正常工作。
此外,需要明确的是,EvaluateJsonPath
旨在执行 JSON 路径表达式以将 JSON 值提取到流文件属性。它不是为了将任意文本处理成 JSON 格式而设计的。
更新
没有将任意数据转换为 JSON 的通用过程。鉴于您提供的具体输入,ReplaceText
的以下值会将其转换为有效的 JSON:
- 搜索值:
(?<!\")(\w+)(?=[\s:])
- 替换值:
""
- 替换策略:
Regex Replace
- 评价模式:
Entire text
如果您以其他方式获得无效的传入数据,则必须修改此过程。您可能对 JSONLint 之类的东西感兴趣,以验证和格式化您的传入数据。
请指导我将字符串转换为 json 的正确组件 使用适当的 Nifi 处理器组件。
输入内容类型为字符串text/plain
{ productName : "tv", locationName: " chennai"}
EvaluateJsonPath 的输出仍然相同,因为作为输入发送的内容类型错误,我无法根据 json 路径评估 json 属性。
{
productName : "tv",
locationName: " chennai"
}
注意:尝试过的 SplitText、AttirtubesToJson 处理器无法实现所需的转换。
这是因为输入数据无效JSON。我在本地重新创建了这个流程,EvaluateJsonPath
的错误是
2017-08-22 10:20:21,079 ERROR [Timer-Driven Process Thread-5] o.a.n.p.standard.EvaluateJsonPath EvaluateJsonPath[id=0aec27af-015e-1000-fac5-4e0f455a10fe] FlowFile StandardFlowFileRecord[uuid=b903eeb0-8985-4517-910f-5e3bbbccb8dc,claim=StandardContentClaim [resourceClaim=StandardResourceClaim[id=1503421928125-1, container=default, section=1], offset=376, length=47],offset=0,name=91708717370829,size=47] did not have valid JSON content.
压缩为 [flowfile] 没有有效的 JSON 内容。处理器使用严格的验证器,您提供的输入无效 JSON。您需要使用文本操作或正则表达式将此内容更新为以下内容:
{"productName":"tv", "locationName":"chennai"}
完成此操作后(通过 ReplaceText
等),EvaluateJsonPath
处理器将正常工作。
此外,需要明确的是,EvaluateJsonPath
旨在执行 JSON 路径表达式以将 JSON 值提取到流文件属性。它不是为了将任意文本处理成 JSON 格式而设计的。
更新
没有将任意数据转换为 JSON 的通用过程。鉴于您提供的具体输入,ReplaceText
的以下值会将其转换为有效的 JSON:
- 搜索值:
(?<!\")(\w+)(?=[\s:])
- 替换值:
""
- 替换策略:
Regex Replace
- 评价模式:
Entire text
如果您以其他方式获得无效的传入数据,则必须修改此过程。您可能对 JSONLint 之类的东西感兴趣,以验证和格式化您的传入数据。