Aldrin Piri created NIFI-360:
--------------------------------

             Summary: Create Processors to work against JSON data
                 Key: NIFI-360
                 URL: https://issues.apache.org/jira/browse/NIFI-360
             Project: Apache NiFi
          Issue Type: New Feature
          Components: Extensions
            Reporter: Aldrin Piri
            Priority: Minor


I have created two Processors, EvaluateJsonPath and SplitJson which are analogs 
of the functionality provided through EvaluateXPath and SpiltXML.

Both are powered primarily around the usage of [JsonPath by 
Jayway|https://github.com/jayway/JsonPath].

Their capability descriptions are provided below:

{panel:title= EvaluateJsonPath}
Evaluates one or more JsonPath expressions against the content of a FlowFile.  
The results of those expressions are assigned to FlowFile Attributes or are 
written to the content of the FlowFile itself, depending on configuration of 
the Processor. JsonPaths are entered by adding user-defined properties; the 
name of the property maps to the Attribute Name into which the result will be 
placed (if the Destination is flowfile-attribute; otherwise, the property name 
is ignored). 

The value of the property must be a valid JsonPath expression. If the JsonPath 
evaluates to a JSON array or JSON object and the Return Type is set to 'scalar' 
the FlowFile will be unmodified and will be routed to failure. A Return Type of 
JSON can return scalar values if the provided JsonPath evaluates to the 
specified value and will be routed as a match. If Destination is 
'flowfile-content' and the JsonPath does not evaluate to a defined path, the 
FlowFile will be routed to 'unmatched' without having its contents modified. If 
Destination is flowfile-attribute and the expression matches nothing, 
attributes will be created with empty strings as the value, and the FlowFile 
will always be routed to 'matched.'
{panel}

{panel:title=SplitJson}
Splits a JSON File into multiple, separate FlowFiles for an array element 
specified by a JsonPath expression. Each generated FlowFile is comprised of an 
element of the specified array and transferred to relationship 'split, with the 
original file transferred to the 'original' relationship. If the specified 
JsonPath is not found or  does not evaluate to an array element, the original 
file is routed to 'failure' and no files are generated.
{panel}

One item of note is the transitive dependency of ASM through Json-Smart through 
JsonPath.

I have included, what I believe is needed to appropriately make use of this 
item in the LICENSE.  Review of its correctness would is requested.

Any feedback is appreciated.  Thanks!



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to