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)
我有一个 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)