0

I need to be able to select elements within a JSON document based on the values in sub-elements which, unfortunately, reside in a list of key-value pairs (this is the structure I have to work with). I'm using Jayway 2.4.0.

Here is the JSON document:

{
    "topLevelArray": [
        {
            "elementId": "Elem1",
            "keyValuePairs": [
                {
                    "key": "Length",
                    "value": "10"
                },
                {
                    "key": "Width",
                    "value": "3"
                },
                {
                    "key": "Producer",
                    "value": "alpha"
                }
            ]
        },
        {
            "elementId": "Elem2",
            "keyValuePairs": [
                {
                    "key": "Length",
                    "value": "20"
                },
                {
                    "key": "Width",
                    "value": "8"
                },
                {
                    "key": "Producer",
                    "value": "beta"
                }
            ]
        },
        {
            "elementId": "Elem3",
            "keyValuePairs": [
                {
                    "key": "Length",
                    "value": "15"
                },
                {
                    "key": "Width",
                    "value": "5"
                },
                {
                    "key": "Producer",
                    "value": "beta"
                }
            ]
        }
    ]
}

Here is the JsonPath I thought would do the trick:

$..topLevelArray[ ?( @.keyValuePairs[ ?(@.key=='Producer' && @.value=='beta') ] ) ]

and

$.topLevelArray[ ?( @.keyValuePairs[ ?(@.key=='Producer' && @.value=='beta') ] ) ]

Unfortunately, both are returning everything in the list, including the entry with Producer of 'alpha'. Thx in advance.

  • What is the exact output you expect from the query? – Matthias Wiehl May 07 '19 at 21:06
  • I was expecting the topLevelArray sub-entries that do not have
    ``` { "key": "Producer", "value": "alpha" }.```
    I tried inserting the full JSON contents but that caused the response to be too large. (I'm a newbie at this.)
    – Randy Friemel May 11 '19 at 14:20
  • Sorry - can't seem to get the formatting down. I was expecting the topLevelArray sub-entries that do not have { "key": "Producer", "value": "alpha" }. – Randy Friemel May 11 '19 at 14:27

0 Answers0