Thanks Matt, What you say helps me understand even because EvaluateJsonPath doesn't support expressions either.
I will try what you mention, I appreciate your ideas. On Tue, Feb 18, 2020 at 4:04 PM Matt Burgess <mattyb...@apache.org> wrote: > 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 > > > -- Saludos Jairo Henao *Chat Skype: jairo.henao.05*