Remis07
Remis07

Reputation: 377

NIFI: get value from json

i have a queryCassandra which generate json like this one:

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

Now, i want to get from this all the term values separated by some separator in string format; ex : term1,term2,term3

So i can pass this list as a string parameter for a java main program which i've alreat set.

(i only need the transofrmation, not the java program execution)

Thank you !

Upvotes: 4

Views: 14054

Answers (2)

daggett
daggett

Reputation: 28564

as a variant use ExecuteScript with 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)

Upvotes: 1

Mahendran V M
Mahendran V M

Reputation: 3496

You can easily get those values by using following ways.

GetFile-->EvaluateJsonPath-->PutFile

In get file you have to specify location of json file.

In EvaluateJsonPath configure like following properties.,

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

At the result of Evaluate json you have two attributes in which having those values.

Result attributes:

input.term1: term1

input.term2: term2

Above code works for me,so feel free to upvote/accept as answer.

Upvotes: 8

Related Questions