Jairo, IIRC the reason we don't support Expression Language (EL) for the JSONPath expression is because the two DSLs use the same characters in different syntax, such as $. To support both, I believe the user would have to escape the JSONPath $ characters so the NiFi Expression Language lexer doesn't think it's a NiFi expression. We could try what some other languages do which is to catch those kinds of errors and proceed under the assumption that the character must be part of a JSONPath rather than an EL expression, but in an error condition how would it know that it was a JSONPath error vs a NiFi EL error? I believe the decision was made to keep things simple for the user and so EL is not currently supported for that field. Happy to continue the discussion though, and I welcome all opinions.
In the meantime you may find (as Pierre suggested) that ForkRecord or SplitRecord would work, as you can use a RecordPath expression rather than a JSONPath expression. If the incoming JSON has a schema (inferred or explicit) and is a top-level array of JSON objects (or one JSON after another), then SplitRecord doesn't need a JSONPath as the JsonTreeReader will take care of reading in the individual records. If you need a JSONPath because you need to split on an array "further down" in the input, you can try ForkRecord with a "Mode" set to "Extract" and likely "Include Parent Fields" set to "false". However as Simon mentioned, any transformation over the entire JSON (whether it be to fork a nested array or JoltTransformJson) will likely have to read the entire file into memory. Regards, Matt On Tue, Feb 18, 2020 at 3:32 PM Jairo Henao <jairohenaoro...@gmail.com> wrote: > > Hi, > Sorry, I should have given a little more details. > > My requirement is that I have a PG (Processor Group) that I defined as a > template, the PG contains several processors and one of them is a SplitJSON, > I want to receive the JsonPath to be applied in a flowfile attribute. > > Apparently then, I must transform my JSON before entering the PG to always > find the same JsonPath. > > Do you consider it useful to make the change request in the processor so that > in the next versions it has that functionality? > > On Tue, Feb 18, 2020 at 2:02 PM Pierre Villard <pierre.villard...@gmail.com> > wrote: >> >> Hi, >> >> We would need a bit more details about what you try to achieve (an example >> maybe?) but the record processors (SplitRecord, ForkRecord, etc) might be >> useful. >> >> Thanks, >> Pierre >> >> Le lun. 17 févr. 2020 à 23:55, Simon Bence <simonbence....@gmail.com> a >> écrit : >>> >>> Hi, >>> >>> Without knowing the actual use case: what if you would run the JSON through >>> JoltTransformJSON and convert it into a format would work well with the >>> SplitJson? It might help. (On the side note: as you mention “huge” JSON, it >>> might be a resource consuming operation) >>> >>> Regards, >>> Bence >>> >>> On 2020. Feb 17., at 21:32, Jairo Henao <jairohenaoro...@gmail.com> wrote: >>> >>> Hi all, >>> >>> Is there any way to be able to "split" a huge JSON, using as JsonPATH the >>> value of an attribute? >>> >>> SplitJson processor does not support this, it must be "hard-coded" >>> >>> >>> -- >>> Jairo Henao >>> >>> > > > -- > Jairo Henao >