10-30-2017 01:09 PM
I have below json body, how would I use jsonpath in a mapper to get all 'name’s?
Its easier for me if the json have ‘name’ instead of ‘@name’…
Not sure how to get all those values in a mapper
{
“response”:
{
“lst”:[
{
@“name”:“terms”,“lst”:{“@name”:“user_query”,“int”:[
{“@name”:“solar energy”,“$”:“4651”},
{“@name”:“script”,“$”:“1993”},
{“@name”:“scenario planning”,“$”:“641”},
{“@name”:“strategy under uncertainty framework”,“$”:“627”},
{“@name”:“smed game”,“$”:“601”},
{“@name”:“specialty pharma”,“$”:“458”},
{“@name”:“specialty pharmaceutical”,“$”:“446”},
{“@name”:“specialty care”,“$”:“444”},
{“@name”:“supply chain”,“$”:“406”},
{“@name”:“sap”,“$”:“310”}]}}
]
}
}
Thanks
Solved! Go to Solution.
10-30-2017 01:37 PM
I’m not quite sure what you’re asking, can you give an example of the output you want?
If you’re asking how to reference a field with a special character, like the @ symbol, you can quote it like so:
['@name']
If you want to collect all the ‘@name’ values at any level, you can do:
jsonPath($, "$..['@name']")
That will return a list containing all the values.
11-27-2017 02:05 PM
In the SnapLogic Designer, the dropdown for expression properties will fill in the correct path with the appropriate quoting:
Also, in the Mapper, you can drag the property from the schema view on the left into the expression property and it should do the same:
11-29-2017 10:31 AM
also… if you get the syntax correct, http://jsonpath.com/ should work for you.
I corrected the input syntax for the below, and it worked for me