2013-07-11 2 views
16

Я использую Powershell 2.0 (не могу сделать upgradearde для V3.0 на данный момент) & Я хочу прочитать ниже объект Json.Прочтите Json Object в 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\"}]}" 

Не могли бы вы помочь мне с тем же.

Спасибо.

ответ

28

Возможно, у вас есть доступные System.Web.Extensions, и вы можете загрузить эту сборку и использовать имеющийся JSON parser. Вот быстрый образец:

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

Ссылка: http://msdn.microsoft.com/en-us/library/system.web.script.serialization.javascriptserializer.aspx

+0

PowerShell V2 runns от .NET 2.0. эта библиотека находится в 3.5, которая, если вы не убедитесь, что установлен .net 3.5+, он не будет работать. , большинство из них будет установлено, но это добавленная зависимость. – jrich523

+1

LOL (дуэльные правки). Да, технически PowerShell v2 убегает * CLR * 2. * Если установлен * .net 3.5, это расширение поверх .net 2.x - но просто имейте в виду, что вы не можете рассчитывать на то, что он доступен, если вы 're в PowerShell 2 ... (и давайте не будем говорить о LoadWithPartialName здесь ...) – Jaykul

+2

'$ psObj = Новый объект PSObject -Property $ ser.DeserializeObject ($ json)' также очень удобен. – Phil