jmespath / jmespath.site

The repo for the jmespath.org website.
http://jmespath.org/
Apache License 2.0
56 stars 51 forks source link

JMESPATH (comparing aggregated nested data) #127

Open jskler opened 1 week ago

jskler commented 1 week ago

Hello!

I was wondering if someone can help me find a solution to compare some nested data.

I have this dataset below, and I need to return true, for case when type is 'X', get shareholder[]firstName+shareholder[]lastName and compare with logistic_name, if they are the same, to give back true. I have been trying to use join, but the return is NULL.

My code is

[(shareholders != null) && ( length(shareholders[?type == 'shareholderperson' && join(' ', [firstName, lastName]) == transaction.receiverName]) > 0)

]

{ "id": 6731037, "customerId": 665, "shareholders": [ -- nested JSON -- { "id": "1", "type": "X, "lastName": "one", "firstName": "james", }, { "id": "2", "type": "Z, "lastName": "two", "firstName": "james", }, { "id": "3", "type": "Y, "lastName": "three", "firstName": "james", } ], "logistic_name": "james one", -- not nested-- } }

Expected result will be TRUE, because there is shareholder type X where the firstName+lastName == logistic_name. ID 1