Darksmilie
Darksmilie

Reputation: 201

Read one Value of a specific object from a json file

I want to return only the hash value of one object from my test.json file.

Right now, I am getting all hash values with my code.

json file:

[
{
    "name": "abc.txt",
    "hash": "D23FC7C4C9F1ED7CD147D7D29E3A541D"
},
{
    "name": "def.txt",
    "hash": "681B75B81734F7215C2DAD1F7EDFDAF7"
},
{
    "name": "ghi.txt",
    "hash": "81709CDC04EBDBDAA9BA15F6CAF1F05B"
},
{
    "name": "xyz.txt",
    "hash": "56F07815D06966FA3A73275797496881"
}
]

My code:

$jsonFile = $PSScriptRoot + "\test.json"
(Get-Content $jsonFile | ConvertFrom-Json | where {$_.name -eq 'abc.txt'}).hash

Upvotes: 0

Views: 131

Answers (2)

Alex_P
Alex_P

Reputation: 2952

Like this your json file contains a list of dictionaries. First you need to select which item of your list you want to have and then you can retrieve the value based on the key.

Try something like this:

$jsonFile = $PSScriptRoot + "\test.json"
$jsonList = Get-Content $jsonFile | ConvertFrom-Json
$jsonList[0].hash

Alternatively:

$jsonObject = $jsonList | Where-Object {$_.name -eq 'abc.txt'} | Select-Object hash

Upvotes: 0

Paolo
Paolo

Reputation: 26074

Careful with the parentheses:

((Get-Content $jsonFile | ConvertFrom-Json) | where {$_.name -eq "abc.txt"}).hash
#D23FC7C4C9F1ED7CD147D7D29E3A541D

Upvotes: 1

Related Questions