Forum Discussion

Tommy's avatar
Tommy
New Contributor III
4 years ago
Solved

Json Path, when some objects don't contain the path

Hello, i have a pipeline that is extracting values from an array using JSON path. This is how it works…

Extract the status and effective data from the array where the “activity” = x

I use this expression…

jsonPath($, “$regulatedActivities[?(@.Activity==‘Credit Broking (W.E.F 01/04/2014)’)].Status”)[0]

All works fine. The problem is, in some cases some items in the array do not contain “Activity” at all. There are subsequent items in the array containing this element, but the expression doesn’t work in this example, it just returns NULL…

  • You can switch to more detailed and easier to control expression. Something like:

    jsonPath($, "$regulatedActivities[*]").filter(x=>x.Activity == 'Credit Broking (W.E.F 01/04/2014)')

    The result from this will be an array filtered by Activity. If you want only the first object ( [0] ) and you want to take the Status from it, than use the following expression:

    jsonPath($, "$regulatedActivities[*]").filter(x=>x.Activity == 'Credit Broking (W.E.F 01/04/2014)')[0].Status

    Let me know if this helps,
    Bojan

2 Replies

  • bojanvelevski's avatar
    bojanvelevski
    Valued Contributor

    You can switch to more detailed and easier to control expression. Something like:

    jsonPath($, "$regulatedActivities[*]").filter(x=>x.Activity == 'Credit Broking (W.E.F 01/04/2014)')

    The result from this will be an array filtered by Activity. If you want only the first object ( [0] ) and you want to take the Status from it, than use the following expression:

    jsonPath($, "$regulatedActivities[*]").filter(x=>x.Activity == 'Credit Broking (W.E.F 01/04/2014)')[0].Status

    Let me know if this helps,
    Bojan

    • Tommy's avatar
      Tommy
      New Contributor III

      Amazing. Thank you