'JSON path help required for a request

I am new at JSON path request and I have a quite complex request to build.

I work with a JSOn strusture having 2 arrays like this example :

{
"WideXml": {
    "Guid": "9cf379c5-dc12-4a63-922a-d242efe9a777",
    "ApplicationGuid": "24df8af4-58c2-40dd-8ce8-70becb2df96f",
    "Action": "Approval",
    "Values": {
        "Date": {
            "TimeStamp": "2021-11-23T04:00:00Z",
            "Value": [{
                    "Guid": "9c64fb06-60f5-4541-a006-3a92ac576e13",
                    "Value": "6.7169265747070313",
                    "Unit": "t",
                    "UserFields": {
                        "Field": [{
                                "Value": "131",
                                "Key": "BWART"
                            },
                            {
                                "Value": "14702-00-BULK",
                                "Key": "MATNR"
                            }
                        ]
                    }
                },
                {
                    "Guid": "6c048d70-1521-4fa1-a462-669730d6b1ed",
                    "Value": "84.824371337890625",
                    "Unit": "t",
                    "UserFields": {
                        "Field": [{
                            "Value": "261",
                            "Key": "BWART"
                        }, {
                            "Value": "14366-00-WA0R",
                            "Key": "MATNR"
                        }]
                    }
                }
            ]
        }
    }
}

}

I need to find the "MATNR" code by searching with Key = 'BWART' and Value = '131'.

I can find the Field document by the request

$.WideXml.Values.Date.Value[*].UserFields.Field[?(@.Key=='BWART' && @.Value=='131')]

But I don't manage to build the query to get the MATNR after having this result...

Can someone help?

Regards.



Solution 1:[1]

if the key BWART is always at the same index position i.e 0 in this example, you can try the expression

$.WideXml.Values.Date.Value[?(@.UserFields.Field[0].Key== "BWART" && @.UserFields.Field[0].Value == "131")].UserFields.Field[*]

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Akshay G