2013-07-11 12 views
16

Ich benutze Powershell 2.0 (kann nicht einen upgarde zu V3.0 ab sofort) & Ich möchte das folgende Json-Objekt lesen.Json Object in Powershell 2.0 lesen

"{\"DevResults\":[{\"TechnologyName\":\"AD\",\"RuleName\":\"SOA account (user logon/display name)\",\"OutputValue\":\"SOADevClientCenter\"}, 
        {\"TechnologyName\":\"AD\",\"RuleName\":\"SOA account (pre-Windows 2000)\",\"OutputValue\":\"SOADevCliCen\"}, 
\"ProdResults\":[{\"TechnologyName\":\"AD\",\"RuleName\":\"SOA account (user logon/display name)\",\"OutputValue\":\"SOAClientCenter\"},     
       {\"TechnologyName\":\"AD\",\"RuleName\":\"BPM Service Account (pre-Windows 2000)\",\"OutputValue\":\"BPM_CliCen_05\"}]}" 

Können Sie mir bitte mit dem gleichen helfen.

Danke.

Antwort

28

Sie haben wahrscheinlich die System.Web.Extensions zur Verfügung, und als solche können Sie diese Baugruppe laden und verwenden Sie die JSON parser, die verfügbar ist. Hier ist eine kurze Probe:

[System.Reflection.Assembly]::LoadWithPartialName("System.Web.Extensions") 
$json = "{a:1,b:2,c:{nested:true}}" 
$ser = New-Object System.Web.Script.Serialization.JavaScriptSerializer 
$obj = $ser.DeserializeObject($json) 

Referenz: http://msdn.microsoft.com/en-us/library/system.web.script.serialization.javascriptserializer.aspx

+0

Powershell V2 .net 2.0 runns ab. Diese Bibliothek ist in 3.5, wenn Sie nicht sicherstellen, dass .net 3.5+ installiert ist, wird es nicht funktionieren. gewährt, die meisten haben es installiert, aber es ist eine zusätzliche Abhängigkeit. – jrich523

+1

LOL (Duellbearbeitung). Ja, technisch läuft PowerShell v2 * CLR * 2. * Wenn * .net 3.5 installiert ist, ist es eine Erweiterung auf .net 2.x - aber sei dir bewusst, dass du nicht darauf zählen kannst, dass es verfügbar ist sind in PowerShell 2 ... (und lasst uns hier nicht über LoadWithPartialName reden ...) – Jaykul

+2

'$ psObj = New-Objekt PSObject -Property $ ser.DeserializeObject ($ json)' ist auch wirklich praktisch. – Phil