2013-07-11 22 views
16

Używam Powershell 2.0 (nie mogę teraz zaktualizować do wersji 3.0). & Chcę przeczytać poniższy obiekt Json.Przeczytaj obiekt Json w pakiecie Powershell 2.0

"{\"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\"}]}" 

Czy możesz mi pomóc z tym samym.

Dzięki.

Odpowiedz

28

Prawdopodobnie masz dostępne rozszerzenia System.Web. i jako takie możesz załadować ten zespół i użyć dostępnego JSON parser. Oto krótkie próbki:

[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) 

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

+0

PowerShell V2 runns off .NET 2.0. ta biblioteka jest w wersji 3.5, o ile nie upewnisz się, że masz zainstalowaną .net 3.5+, nie będzie działać. przyznane, większość go zainstaluje, ale jest to dodatkowa zależność. – jrich523

+1

LOL (pojedynki edytowane). Tak, technicznie PowerShell v2 uruchamia się * CLR * 2. * Jeśli * .net 3.5 jest zainstalowany, jest rozszerzeniem na .net 2.x - ale pamiętaj, że nie możesz liczyć, że będzie dostępny, jeśli "ponownie w PowerShell 2 ... (i nie mówmy tutaj o LoadWithPartialName ...) – Jaykul

+2

' $ psObj = New-Object PSObject -Property $ ser.DeserializeObject ($ json) 'jest również bardzo przydatny. – Phil

Powiązane problemy