如何在powershell中迭代json对象
Posted
技术标签:
【中文标题】如何在powershell中迭代json对象【英文标题】:How to iterate json object in powershell 【发布时间】:2022-01-23 10:49:49 【问题描述】:我正在使用以下代码在 PowerShell 中迭代 JSON 对象
$awsFileResponse = '
"commitId":"opb274750f582ik",
"blobId":"io6956a1a967243514e194lk54b86",
"filePath":"PowershellScript.ps1",
"fileMode":"NORMAL",
"fileSize":5755,
"fileContent":"7"
'
foreach($KeyParam in $awsFileResponse)
Write-Host 'Ashish'
Write-Host $KeyParam
Write-Host $KeyParam.NAME
Write-Host $KeyParam.VALUE
if($KeyParam.NAME -eq 'fileContent')
$fileContentResponse = $KeyParam.VALUE
Write-Host $fileContentResponse
我没有得到我正在寻找的确切输出。
-
以下行没有打印任何内容
写主机 $KeyParam
写入主机 $KeyParam.NAME
写入主机 $KeyParam.VALUE
如果条件不往里面走
【问题讨论】:
【参考方案1】:它不起作用,因为变量 awsFileResponse 不是 Json 对象而是字符串。因此,首先您必须将字符串解析为自定义对象。然后你必须循环它里面的所有属性。并检查 $keeyParam.NAME 而不是 $keyParam 对象的 fileContent 键条件。
工作代码
$awsFileResponse = '
"commitId":"7cf4ca8ea129c2b9b274750f58245605e081580e",
"blobId":"1d46ec453a6956a1a967243514e1944754c54b86",
"filePath":"PowershellScript.ps1",
"fileMode":"NORMAL",
"fileSize":5755,
"fileContent":"7"
'
#Parse to Json Object
$jsonObject = $awsFileResponse | ConvertFrom-Json;
#loop all custom object properties
foreach($KeyParam in $jsonObject.psobject.properties)
Write-Host 'Ashish'
Write-Host $KeyParam
Write-Host $KeyParam.NAME
Write-Host $KeyParam.VALUE
if($KeyParam.NAME -eq 'fileContent')
$fileContentResponse = $KeyParam.VALUE
Write-Host $fileContentResponse
【讨论】:
以上是关于如何在powershell中迭代json对象的主要内容,如果未能解决你的问题,请参考以下文章
PowerShell - 使用排序的对象数组打印 JSON 输出?