如何使用 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
}
我正在寻找解析 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
}