2013-07-11 33 views
16

Tôi đang sử dụng Powershell 2.0 (không thể thực hiện bản nâng cấp lên V3.0 lúc này) & Tôi muốn đọc đối tượng Json bên dưới.Đọc đối tượng Json trong 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\"}]}" 

Bạn có thể vui lòng giúp tôi không.

Cảm ơn.

Trả lời

28

Bạn có thể có sẵn System.Web.Extensions và như vậy bạn có thể tải cụm từ đó và sử dụng JSON parser có sẵn. Đây là một mẫu nhanh:

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

tham khảo: http://msdn.microsoft.com/en-us/library/system.web.script.serialization.javascriptserializer.aspx

+0

PowerShell V2 runns tắt .net 2.0. thư viện này là 3,5, trừ khi bạn chắc chắn đã có. 3.5+ cài đặt, nó sẽ không hoạt động. được cấp, hầu hết sẽ được cài đặt, nhưng phụ thuộc của nó được thêm vào. – jrich523

+1

LOL (dueling chỉnh sửa). Vâng, về mặt kỹ thuật PowerShell v2 chạy * CLR * 2. * Nếu * .net 3.5 được cài đặt, đó là bản mở rộng ở trên cùng của .net 2.x - nhưng chỉ cần lưu ý rằng bạn không thể dựa vào tính năng khả dụng nếu bạn đang trong PowerShell 2 ... (và chúng ta không nói về LoadWithPartialName ở đây ...) – Jaykul

+2

'$ psObj = New-Object PSObject -Property $ ser.DeserializeObject ($ json)' cũng thực sự tiện dụng. – Phil

Các vấn đề liên quan