Chris,

Unfortunately, at this time, the EvaluateJsonPath requires that the JSON to 
evaluate be the content of the FlowFIle.
There already does exist a ticket [1] that would allow you to specify an 
attribute to use as the JSON instead of
requiring that it be the content only. Unfortunately, this has not yet been 
implemented.

Thanks
-Mark

[1] https://issues.apache.org/jira/browse/NIFI-1567


> On Mar 21, 2016, at 1:48 PM, McDermott, Chris Kevin (MSDU - 
> STaTS/StorefrontRemote) <[email protected]> wrote:
> 
> Joe,
> 
> Thanks for the reply.  I think I was not clear.
> 
> The JSON I need to evaluate is in a FlowFile attribute (kafka.key) which I 
> need to be able to evaluate without modifying the original FlowFile content 
> (which was read from the Kafka topic).  What I can’t figure out is how to 
> squirrel away the flowfile content so that I can write the value of the 
> kafka.key attribute to the FlowFile content, so that I can process it with 
> EvaluateJsonPath, and then read content I squirreled away back into the 
> FlowFile content. I considered using the the DistributedMapCache, but there 
> would be no guarantee what I added to the cache would still be there when I 
> needed it back.
> 
> 
> 
> 
> On 3/21/16, 1:37 PM, "Joe Witt" <[email protected]> wrote:
> 
>> Chris,
>> 
>> Sounds like you have the right flow in mind already.  EvaluateJSONPath
>> does not write content.  It merely evaluates the given jsonpath
>> expression against the content of the flowfile and if appropriate
>> creates a flowfile attribute of what it finds.
>> 
>> For example if you have JSON from Twitter you can use EvaluateJsonPath
>> and add a property with a name
>> 'twitter.user' and a value of '$.user.name'
>> 
>> Once you run the tweets through each flow file will have an attribute
>> called 'twitter.user' with the name found in the message.  No
>> manipulation of content at all.  Just promotes things it finds to flow
>> file attributes.
>> 
>> Thanks
>> Joe
>> 
>> On Mon, Mar 21, 2016 at 1:34 PM, McDermott, Chris Kevin (MSDU -
>> STaTS/StorefrontRemote) <[email protected]> wrote:
>>> What I need to do is read a file from Kafka.  The Kafka key contains a JSON 
>>> string which I need to turn in FlowFile attributes while preserving the 
>>> original FlowFile content.  Obviously I can use EvaluteJsonPath but that 
>>> necessitates replacing the FlowFile content with the kaka.key attribute, 
>>> thus loosing the original FlowFile content.  I feel like I’m missing 
>>> something fundamental.

Reply via email to