Skip to main content
ChuckE
Gold ⭐️
October 12, 2022
Solved

Return a scalar value with EvaluateJSONPath processor

I need to use wildcard syntax in a JSON path to return the color of the bike as a scalar value.  However, the problem is that when I use wildcard syntax with the EvaluateJSONPath processor it always returns an array.  For example

This path returns a scalar value:     $.store.bicycle.color   ==>  red

This path returns an array:              $..bicycle.color         ==> ['red']         

Is it possible to use the EvaluateJSONPath processor with wildcards and get a scalar value in return? 

Or, is it possible to extract the value from the array without using an additional processor?

 

{
"store": {
"bicycle": {
"color": "red",
"price": 19.95
}
},
"expensive": 10
}

 

 

 

SAMSAL
SAMSALAnswer
Platinum ⭐️⭐️⭐️
October 13, 2022

Hi,

I dont think there is a way to do that in one processor, check out this post around the problem with possible solution:

https://community.cloudera.com/t5/Support-Questions/Unable-to-return-a-scalar-value-for-the-expression-from-NIFI/td-p/213677

 

If you find this helpful please accept solution.

2 replies

SAMSAL
SAMSALAnswer
Platinum ⭐️⭐️⭐️
October 13, 2022

Hi,

I dont think there is a way to do that in one processor, check out this post around the problem with possible solution:

https://community.cloudera.com/t5/Support-Questions/Unable-to-return-a-scalar-value-for-the-expression-from-NIFI/td-p/213677

 

If you find this helpful please accept solution.

Translate
ChuckE
ChuckEAuthor
Gold ⭐️
October 13, 2022

Thanks @SAMSAL, I was tracking that previous post but since it was so old I was hoping newer versions of NiFi could address this.  This is such a simple thing with XML and the EvaluateXPath processor, I am just surprised that we can't do something similar with JSON.  Oh well, 2 processors it is.

Translate