2017-08-01 54 views
1

首先感謝您提前。我試圖使用PowerShell從下面的JSON字符串中檢索以下值,但遇到問題。在PowerShell中獲取JSON Sting的價值

ScheduleTitle, 
Title, 
Environment and Title 
Resolution, 
Width, 
Height 

JSON:

{"Id":"d52fb00e-8736-448c-a496-96db6bc2eb43","ScheduleId":"275726dc-09f2-4869-b1a0-54c71ef6a093","ScheduleTitle":"Resolution Testing","RunType":"RunNow","Timestamp":"2017-08-01T04:52:19.2039685","AutomationRunItems":[{"Id":"f7b731fb-cd96-4003-b95c-ef1594f1c86e","AutomationRunId":"d52fb00e-8736-448c-a496-96db6bc2eb43","Status":"Done","Case":{"Id":"c8a0b939-54ba-4b98-8ca9-101093aec26f","Title":"Resolution Test"},"Environment":{"Id":"e1783fb5-4001-45d0-9971-b49c31b374ab","Title":"Se Chrome"},"Keyframes":[{"Timestamp":"2017-08-01T04:52:03.0685609","Elapsed":"00:00:00","Level":"Info","Status":"Connecting","BlockId":"78c198ac-b61f-40eb-b1d9-e706546f2be3","LogMessage":"Connecting to Se Chrome: Selenium Grid (localhost:5559) on Chrome with size 1280x1024"},{"Timestamp":"2017-08-01T04:52:03.0685609","Elapsed":"00:00:00.0000003","Level":"Info","Status":"Connected","BlockId":"78c198ac-b61f-40eb-b1d9-e706546f2be3","LogMessage":"Connected"},{"Timestamp":"2017-08-01T04:52:03.0685609","Elapsed":"00:00:00.0000015","Level":"Info","Status":"Running","BlockId":"78c198ac-b61f-40eb-b1d9-e706546f2be3","LogMessage":"Running"},{"Timestamp":"2017-08-01T04:52:03.0695642","Elapsed":"00:00:00.0003729","Level":"Trace","Status":"Running","BlockId":"78c198ac-b61f-40eb-b1d9-e706546f2be3","LogMessage":"Block is executing."},{"Timestamp":"2017-08-01T04:52:03.5713896","Elapsed":"00:00:00.5020154","Level":"Trace","Status":"Running","BlockId":"78c198ac-b61f-40eb-b1d9-e706546f2be3","LogMessage":"Block is executed."},{"Timestamp":"2017-08-01T04:52:03.5713896","Elapsed":"00:00:00.5021370","Level":"Trace","Status":"Running","BlockId":"302f21b8-a279-48ce-9338-580a97c930fd","LogMessage":"Block is executing."},{"Timestamp":"2017-08-01T04:52:06.9793063","Elapsed":"00:00:03.9107459","Level":"Info","Status":"Running","BlockId":"302f21b8-a279-48ce-9338-580a97c930fd","LogMessage":"Chrome was successfully started"},{"Timestamp":"2017-08-01T04:52:09.4641639","Elapsed":"00:00:06.3955903","Level":"Info","Status":"Running","BlockId":"302f21b8-a279-48ce-9338-580a97c930fd","LogMessage":"Chrome loaded url https://dev.bamapplication.com/app/starke/npr/3BF6DA09C1/wizard"},{"Timestamp":"2017-08-01T04:52:09.7604882","Elapsed":"00:00:06.6925088","Level":"Trace","Status":"Running","BlockId":"302f21b8-a279-48ce-9338-580a97c930fd","LogMessage":"Block is executed."},{"Timestamp":"2017-08-01T04:52:09.7604882","Elapsed":"00:00:06.6926471","Level":"Trace","Status":"Running","BlockId":"26382d5d-60a6-4343-b934-265c4e97186d","LogMessage":"Block is executing."},{"Timestamp":"2017-08-01T04:52:10.4639126","Elapsed":"00:00:07.3954580","Level":"Warning","Status":"Running","BlockId":"26382d5d-60a6-4343-b934-265c4e97186d","LogMessage":"Web screenshot is saved"},{"Timestamp":"2017-08-01T04:52:10.7666916","Elapsed":"00:00:07.6982198","Level":"Trace","Status":"Running","BlockId":"26382d5d-60a6-4343-b934-265c4e97186d","LogMessage":"Block is executed."},{"Timestamp":"2017-08-01T04:52:10.7666916","Elapsed":"00:00:07.6983727","Level":"Trace","Status":"Running","BlockId":"161e621f-bb7a-4f42-a5f1-67e07d1432f4","LogMessage":"Block is executing."},{"Timestamp":"2017-08-01T04:52:11.7677637","Elapsed":"00:00:08.6992111","Level":"Info","Status":"Done","BlockId":"161e621f-bb7a-4f42-a5f1-67e07d1432f4","LogMessage":"Case is stopped."}],"Resolution":{"Width":1280,"Height":1024},"Elapsed":"00:00:08.6992111","CreatedAt":"2017-08-01T04:52:19.2039685","ModifiedAt":"2017-08-01T04:52:19.2039685"}],"ProjectId":"275726dc-09f2-4869-b1a0-54c71ef6a093","ExecutionTotalTime":"00:00:08.6992111","FailedCount":0,"PassedCount":0,"DoneCount":1,"CreatedAt":"2017-08-01T04:52:03.0685609"} 

代碼:

Param([string]$result, [string]$rootPath) 
try{ 
    $json = $result 
    $parsed = $json | ConvertFrom-Json 
    $output= '' 
    foreach ($line in $parsed | Get-Member) { 
     Write-Output $parsed.$($line.Resolution).property1 
     Write-Output $parsed.$($line.Resolution).property2 
     $output += $parsed.$($line.Resolution).property1 + " " + $parsed.$($line.Resolution).property1 
    } 
} 
+0

請務必仔細閱讀https://stackoverflow.com/help/how-在問你一個問題之前詢問。你如何試圖檢索未指定的值。 – darthsidious

+0

把它放在問題中。 – darthsidious

+0

你想要的屬性需要更好地定義。有多個'Title'屬性,也許你可以更具體一些,比如'AutomationRunItems.Case.Title','AutomationRunItems.Environment.Title','AutomationRunItems.Resolution.Width'等。 – TheMadTechnician

回答

1

與您$parsed數據可以提取你需要的所有信息。

例如提取寬度:

echo $parsed.AutomationRunItems.Resolution.Width 

應打印:1280

我覺得這些都是你需要提取的所有字段。請注意,因爲你沒有指定輸出正是我只是用逗號分隔的字符串:

$output= '' 
$output = $output + $parsed.ScheduleTitle + ',' 
$output = $output + $parsed.AutomationRunItems.Case.Title + ',' 
$output = $output + $parsed.AutomationRunItems.Environment.Title + ',' 
$output = $output + $parsed.AutomationRunItems.Resolution.Width + ',' 
$output = $output + $parsed.AutomationRunItems.Resolution.Height 

應打印:Resolution Testing,Resolution Test,Se Chrome,1280,1024

+0

他已經有了JSON '$ parsed',所以他不需要將其保存到文件中。他只需要引用正確的屬性,比如你提到的'$ parsed.AutomationRunItems.Resolution.Width' – TheMadTechnician

+0

非常感謝!那樣做了。 –