cancel
Showing results for 
Search instead for 
Did you mean: 

hasPath within List

manohar
Contributor

Hi there, I am trying to check if json list has a node within.

in below json checking if IDOC.E1EDP01 has E1EDPT1; which works fine. then when I am trying to look for E1EDPT2, thats when its failing.

I have below expression.

$IDOC.E1EDP01.filter(x=>x.hasPath(‘E1EDPT1’)).length > 0 && jsonPath($, “IDOC.E1EDP01[*].E1EDPT1”).filter(x=>x.hasPath(‘E1EDPT2’)).length > 0

[
  {
    "IDOC": {
      "E1EDP01": [
        {
          "POSEX": "00010",
          "E1EDPT1": [
            {
              "E1EDPT2": [
                {
                  "TDLINE": "CONTROL PANEL"
                }
              ]
            }
          ]
        },
        {
          "POSEX": "00020",
          "E1EDPT1": {
            "E1EDPT2": [
              {
                "TDLINE": " TURBINE, DRAWING"
              }
            ]
          }
        },
        {
          "POSEX": "00030",
          "E1EDPT1": [
            {
              "E1EDPT2": [
                {
                  "TDLINE": "CONTROLLER"
                }
              ]
            }
          ]
        }
      ]
    }
  }
]

Any help in how I can achieve it?

Thanks
Manohar

4 REPLIES 4

bojanvelevski
Valued Contributor

Hey @manohar,

Are you checking for E1EDPT2 on a specific place (level) or anywhere in the object?

The following expression will return the value of E1EDPT2 if it’s on a specific location in the json
jsonPath($, "IDOC.E1EDP01[*].E1EDPT1.E1EDPT2")

And a similar one, will look for everywhere in the json after the E1EDP01[*].E1EDPT1 part :
jsonPath($, "IDOC.E1EDP01[*].E1EDPT1..E1EDPT2")

Note that this will result in array of values.
If this is not what you’re looking for, please give us some more specific information.

Regards,
Bojan

Hi @bojanvelevski, as always appreciate your help.

no I am just checking if E1EDPT2 exist or not and has value in it.

hope that helps.

Thanks
Manohar

I was able to just us your jsonPath($, “IDOC.E1EDP01[*].E1EDPT1…E1EDPT2”) and it worked just fine.

Thanks again @bojanvelevski for the help.

Is there way to mark a response as solution?

Manohar

Anytime. You should see the option on the response itself.