cancel
Showing results forย 
Search instead forย 
Did you mean:ย 

Mapper Snap : Help with JsonPath

DaisyTam
New Contributor

Hi

I appreciate some help in transform the attached input to the attached output.

I have tried using the mapper snap with the following expression
$person.jive.profile[?(value.jive_label == โ€˜Countryโ€™)].value
$person.jive.profile[?(jive_label == โ€˜Countryโ€™)].value

And is getting syntax error.

input.txt (636 Bytes)
output.txt (191 Bytes)

5 REPLIES 5

nganapathiraju
Former Employee

The correct way is like this

Country:

jsonPath($, "$person.jive.profile[?(@.jive_label=='Country')].value")[0]

Company:

jsonPath($, "$person.jive.profile[?(@.jive_label=='Company Name')].value")[0]

But, since it will get an array of values, you would want to grap the index 0.

Let me know if this helps!!

DaisyTam
New Contributor

This works.

jsonPath($, โ€œ$person.jive.profile[?(value.jive_label==โ€˜Countryโ€™)].valueโ€)[0]

So โ€˜Countryโ€™ sometimes does not exist. How do I deal with that use case?

I solved the problem with

jsonPath($, โ€œ$person.jive.profile[?(value.jive_label==โ€˜Countryโ€™)].valueโ€).length > 0 ? jsonPath($, โ€œ$person.jive.profile[?(value.jive_label==โ€˜Countryโ€™)].valueโ€)[0] : null