2013-07-11 5 views
16

Sto usando Powershell 2.0 (non posso rendere un upgarde alla V3.0 sin d'ora) & Voglio leggere il seguente oggetto Json.Leggi Json Object in 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\"}]}" 

Potete per favore aiutarmi con lo stesso.

Grazie.

risposta

28

Probabilmente sono disponibili le System.Web.Extensions e, come tale, è possibile caricare tale assembly e utilizzare lo JSON parser disponibile. Ecco un esempio rapido:

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

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

+0

PowerShell V2 runns fuori .net 2.0. questa libreria è in 3.5 che, a meno che non si accerti di aver installato .net 3.5+, non funzionerà. concesso, la maggior parte lo installerà, ma è una dipendenza aggiunta. – jrich523

+1

LOL (modifica del duello). Sì, tecnicamente PowerShell v2 funziona fuori * CLR * 2. * Se * .net 3.5 è installato, è un'espansione in cima a .net 2.x - ma tieni presente che non puoi contare sul fatto che sia disponibile se sei in PowerShell 2 ... (e non parliamo di LoadWithPartialName qui ...) – Jaykul

+2

'$ psObj = New-Object PSObject -Property $ ser.DeserializeObject ($ json)' è anche molto utile. – Phil