83 votes

PowerShell : récupérer un objet JSON par valeur de champ

Considérez JSON dans ce format :

"Stuffs": [
    {
        "Name": "Darts",
        "Type": "Fun Stuff"
    },
    {
        "Name": "Clean Toilet",
        "Type": "Boring Stuff"
    }
]

Dans PowerShell 3, nous pouvons obtenir une liste de Stuffs :

$JSON = Get-Content $jsonConfigFile | Out-String | ConvertFrom-Json

En supposant que nous ne connaissions pas le contenu exact de la liste, y compris l'ordre des objets, comment pouvons-nous récupérer le(s) objet(s) ayant une valeur spécifique pour le champ Nom ?

Par la force brute, nous pourrions itérer à travers la liste :

foreach( $Stuff in $JSON.Stuffs ) { 

Mais j'espère qu'il existe un mécanisme plus direct (similaire à Lync ou aux expressions Lambda en C#).

2voto

Nikheel Points 117

Voici mes données json :

[
   {
      "name":"Test",
      "value":"TestValue"
   },
   {
      "name":"Test",
      "value":"TestValue"
   }
]

Powershell script :

$data = Get-Content "Path to json file" | Out-String | ConvertFrom-Json

foreach ($line in $data) {
     $line.name
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X