I have following JSON, I need to get the personEmailContact which has a matching emailID with emailupdaterequest.emailContact. I tried to write the expression like $.responsebody[?(@.personEmailContact.emailId ==$.emailupdaterequest.emailContact.emailId)] but this does not seem to work, I need to write an expression which can work without substitution. Can anyone help with any pointers
{
"emailupdaterequest": {
"emailContact": {
"emailId": "[email protected]",
"contactName": "ADMIN EMAIL"
}
},
"responsebody": [
{
"personEmailContact": {
"emailId": "[email protected]",
"contactTypeCode": "P",
"contactName": "Joe"
}
},
{
"personEmailContact": {
"emailId": "[email protected]",
"contactTypeCode": "P",
"contactName": "john"
}
}
]
}
You should be able to use the root selector
$
inside an expression. This will allow you to compare values inside an array element to values elsewhere within the JSON:Note the
$.emailupdaterequest.emailContact.emailId
.$
indicates the path is evaluated from the root of the JSON, whereas@
indicates that the path is evaluated from the current item as the processor iterates over the array.