[Solved] Not able to fetch the individual details from JSON data


You don’t need to use foreach for this. You can just use Select-Object for this. Assuming your JSON is as @Mark Wragg linked in the comments:

$Json = @'
[{
    "Ns": {
        "value": [{
            "Nname": "exa",
            "SR": [{
                    "name": "port1",
                    "properties": {
                        "description": "Allow port1",
                        "destinationPortRange": "1111",
                        "priority": 100
                    }
                },
                {
                    "name": "port1_0",
                    "properties": {
                        "description": "Allow port1",
                        "destinationPortRange": "1111",
                        "priority": 150
                    }
                },
                {
                    "name": "port2",
                    "properties": {
                        "description": "Allow  1115",
                        "destinationPortRange": "1115",
                        "priority": 100
                    }
                }
            ]
        }]
    }
}]
'@
 
$t = $Json | ConvertFrom-Json

Your test file should look like this:

$result = $t.Ns.value.SR.properties.destinationPortRange
it 'destinationPortRange matches' {
  $result | Should -BeExactly @('1111','1111','1115')
}

Explanation

Your use of foreach was incorrect as you compared single element (also notice that I deleted unnecessary space)

$Ndata.properties.destinationPortRange

to the array

| Should -BeExactly @('1111','1111','1115')

What you have to do is to compare array to array as in my example.

1

solved Not able to fetch the individual details from JSON data