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