PowerShell : retrieve JSON object by field value PowerShell : retrieve JSON object by field value powershell powershell

PowerShell : retrieve JSON object by field value


$json = @"{"Stuffs":     [        {            "Name": "Darts",            "Type": "Fun Stuff"        },        {            "Name": "Clean Toilet",            "Type": "Boring Stuff"        }    ]}"@$x = $json | ConvertFrom-Json$x.Stuffs[0] # access to Darts$x.Stuffs[1] # access to Clean Toilet$darts = $x.Stuffs | where { $_.Name -eq "Darts" } #Darts


I just asked the same question here: https://stackoverflow.com/a/23062370/3532136It has a good solution. I hope it helps ^^.In resume, you can use this:

The Json file in my case was called jsonfile.json:

{    "CARD_MODEL_TITLE": "OWNER'S MANUAL",    "CARD_MODEL_SUBTITLE": "Configure your download",    "CARD_MODEL_SELECT": "Select Model",    "CARD_LANG_TITLE": "Select Language",    "CARD_LANG_DEVICE_LANG": "Your device",    "CARD_YEAR_TITLE": "Select Model Year",    "CARD_YEAR_LATEST": "(Latest)",    "STEPS_MODEL": "Model",    "STEPS_LANGUAGE": "Language",    "STEPS_YEAR": "Model Year",    "BUTTON_BACK": "Back",    "BUTTON_NEXT": "Next",    "BUTTON_CLOSE": "Close"}

Code:

$json = (Get-Content "jsonfile.json" -Raw) | ConvertFrom-Json$json.psobject.properties.name

Output:

CARD_MODEL_TITLECARD_MODEL_SUBTITLECARD_MODEL_SELECTCARD_LANG_TITLECARD_LANG_DEVICE_LANGCARD_YEAR_TITLECARD_YEAR_LATESTSTEPS_MODELSTEPS_LANGUAGESTEPS_YEARBUTTON_BACKBUTTON_NEXTBUTTON_CLOSE

Thanks to mjolinor.


David Brabant's answer led me to what I needed, with this addition:

x.Stuffs | where { $_.Name -eq "Darts" } | Select -ExpandProperty Type