Rozważmy JSON w tym formacie:PowerShell: odzyskać obiekt JSON przez wartość pola
"Stuffs": [
{
"Name": "Darts",
"Type": "Fun Stuff"
},
{
"Name": "Clean Toilet",
"Type": "Boring Stuff"
}
]
W PowerShell 3, możemy uzyskać listę Stuffs:
$JSON = Get-Content $jsonConfigFile | Out-String | ConvertFrom-Json
Zakładając, że nie wiem dokładna zawartość listy, w tym kolejność obiektów, w jaki sposób możemy pobrać obiekt (y) o określonej wartości dla pola Nazwa?
Brutalna siła, możemy wykonać iterację listy:
foreach($Stuff in $JSON.Stuffs) {
Ale mam nadzieję, istnieje bardziej bezpośredni mechanizm (podobny do Lync lub wyrażeń lambda w C#).
Dzięki Dawida. Zmieniłem moje pytanie, aby było bardziej jasne. Twoja odpowiedź nie zadziała, ponieważ kod nie będzie wiedział z góry, jak zbudowany jest JSON. Możliwe, że rzutki znajdują się w gnieździe 0 i Czysta toaleta w gnieździe 1, ale może też być tak, że Czysta toaleta jest w gnieździe 0, a Rzutka jest w gnieździe 1. Dlatego potrzebuję jakiegoś sposobu dopasowania obiektów w polu Nazwa. – BaltoStar
$ x.Stuffs | gdzie {$ _. Nazwa -eq "Rzutki"} –