如何使用 power shell 解析 JSON 响应?

how to parse JSON response using power shell?

我正在寻找解析 JSON 响应与 powershell 在 Azure Runbook 上运行。, 以下是我的代码。

$servicePrincipalConnection=Get-AutomationConnection -Name "AzureRunAsConnection"         
Connect-AzAccount `
        -ServicePrincipal `
        -TenantId $servicePrincipalConnection.TenantId `
        -ApplicationId $servicePrincipalConnection.ApplicationId `
        -CertificateThumbprint $servicePrincipalConnection.CertificateThumbprint | Write-Verbose

$uri = 'https://nseindia.com//emerge/homepage/smeNormalMktStatus.json'
$result = Invoke-WebRequest -Uri $uri -UseBasicParsing
Write-Output $result
$result = $result.Content
Write-Output $result
Write-Output $result.NormalMktStatus
Write-Output 'saranaraj kumar'
# Stop-AzStreamAnalyticsJob -Name SQLCDCProcessor -ResourceGroupName RealTimeAnalytics

以下是我的JSON回复

StatusCode        : 200
StatusDescription : OK
Content           : {"NormalMktStatus":"open"}
RawContent        : HTTP/1.1 200 OK
                    X-FRAME-OPTIONS: SAMEORIGIN
                    Pragma: no-cache
                    Connection: keep-alive
                    Content-Length: 26
                    Cache-Control: max-age=0, no-cache, no-store
                    Content-Type: application/json
                    Date: Fri, 27 ...
Forms             : 
Headers           : {[X-FRAME-OPTIONS, SAMEORIGIN], [Pragma, no-cache], [Connection, keep-alive], [Content-Length, 
                    26]...}
Images            : {}
InputFields       : {}
Links             : {}
ParsedHtml        : 
RawContentLength  : 26
{"NormalMktStatus":"open"}
saranaraj kumar

从电源我得到 JSOn 如上所述的响应,我可以阅读包含 {"NormalMktStatus":"open"} 的 response.content 但如果我使用 response.content.normalMKTstatus,我就会变空 space。 如何解决? 而且我还想做 if-else 条件 shell 即

if(response.content.normalMKTstatus -eq 'open')
    {
    write-output true
    }
    else
    {
    write-output false
    }

如果您使用 $result =Invoke-WebRequest...$result.Content 包含一个 JSON 字符串 ,您首先需要将其解析为 objects,以便能够使用点符号 (.normalMktStatus).

访问属性

虽然您可以使用 ConvertFrom-Json to perform this parsing, it is simpler to use the
Invoke-RestMethod cmdlet,它在幕后执行 JSON 解析并直接 returns 表示 [=30 的对象([pscustomobject] 类型) =] 内容
:

$obj = Invoke-RestMethod https://nseindia.com//emerge/homepage/smeNormalMktStatus.json

$obj.NormalMktStatus # -> 'open'

if ($obj.NormalMktStatus -eq 'open') {
  $true
}
else {
  $false 
}