NIFI:从 json 获取价值

NIFI: get value from json

我有一个 queryCassandra 生成 json 像这样:

{"results":[{"term":"term1"},{"term":"term2"}..]}

现在,我想从中获取所有由字符串格式的分隔符分隔的术语值;前任 : 学期 1、学期 2、学期 3

所以我可以将此列表作为字符串参数传递给我已经设置的 java 主程序。

(我只需要转换,不需要java程序执行)

谢谢!

您可以通过以下方式轻松获取这些值。

GetFile-->EvaluateJsonPath-->PutFile

在获取文件时,您必须指定 json 文件的位置。

在 EvaluateJsonPath 中配置如下属性。,

Destination:flowfile-attribute
Return Type:json
input.term1:$.results.[0].term           //To get term
input.term2:$.results.[1].term

在计算结果 json 中,您有两个具有这些值的属性。

结果属性:

input.term1: term1

input.term2: term2

以上代码对我有用,所以请随时 upvote/accept 作为答案。

作为变体使用 ExecuteScript 和 groovy lang:

import groovy.json.*

//get input file
def flowFile = session.get()
if(!flowFile)return

//parse json to map/array objects
def content = session.read(flowFile).withStream{ stream-> return new JsonSlurper().parse( stream ) }

//transform
content = content.results.collect{ it.term }.join(',')

//write new content
flowFile = session.write(flowFile,{ stream->
    stream << content.getBytes("UTF-8")
} as OutputStreamCallback)

session.transfer(flowFile, REL_SUCCESS)