在Powershell中解析JSON

vktxenjb  于 2022-11-26  发布在  Shell
关注(0)|答案(3)|浏览(214)

我有一个包含以下内容的json文件。我想在Powershell中遍历每一项(使用foreach循环)。我该怎么做呢?

{
  "abc": {
    "isSecret": null,
    "value": "'167401'"
  },
  "dar": {
    "isSecret": null,
    "value": "8980"
  },
  "hgt": {
    "isSecret": null,
    "value": "893240"
  },
  "newvar1": {
    "isSecret": null,
    "value": "newvalue1"
  },
  "var": {
    "isSecret": null,
    "value": "1230"
  }
}
nsc4cvqm

nsc4cvqm1#

$Data = $Json |ConvertFrom-Json
$Data.PSObject.Properties.Value

isSecret value
-------- -----
         '167401'
         8980
         893240
         newvalue1
         1230

要迭代这些值,请执行以下操作:

$Data.PSObject.Properties.Value.ForEach{
    Write-Host 'isSecret:' $_.isSecret
    Write-Host 'Value:' $_.Value
}
sdnqo3pr

sdnqo3pr2#

您可以执行以下操作:

$input = @'
<your input here>
'@

$json = $input | ConvertFrom-Json

foreach($item in $json.PSObject.Properties)
{
    Write-Output $item.Name 
    Write-Output $item.Value.isSecret
    Write-Output $item.Value.value
}

有了你的输入,我得到:

abc
'167401'
dar
8980
hgt
893240
newvar1
newvalue1
var
1230

因为所有的isSecret值都是null,所以它们不会显示任何内容。

eagi6jfj

eagi6jfj3#

Powershell 7版本,包含名称、值对:

cat file.json | convertfrom-json -AsHashtable

Name                           Value
----                           -----
hgt                            {isSecret, value}
newvar1                        {isSecret, value}
dar                            {isSecret, value}
abc                            {isSecret, value}
var                            {isSecret, value}

相关问题