使用PowerShell读取,修改和解析JSON文件(对象)

JSON是一种基于文本的流行格式,用于代表和传输基于JavaScript对象语法的结构化数据。 PowerShell中有两个CMDLET,可让您使用JSON数据格式:ConvertFrom-JsonConvertTo-Json。让我们看一下如何使用PowerShell创建,读取或修改JSON对象并将其保存到文件中。

JSON格式的数据表示为钥匙:值对(允许属性嵌套)。假设您想将JSON数据写入文件。创建JSON结构化数据对象:

$obj = @{
    Name = "Henry"
    Roles = @{
          AD = "Admin"
          SQL = "Report"
      }
      "Company" = "woshub"
  }

现在将对象转换为JSON格式,然后将其保存到用一个文件.json扩大:

$json = $obj | ConvertTo-Json
$json | Set-Content -Path C:\PS\userroles.json

另请阅读:

您现在可以读取JSON文件:

$json = Get-Content -Path C:\PS\userroles.json -Raw | ConvertFrom-Json

列出所有JSON对象属性:

$json|fl

或者,您可以在JSON对象中获取特定属性的值:

$json.roles.sql

使用添加会员命令将新属性添加到JSON对象:

$json| Add-Member -MemberType NoteProperty -Name "Email" -Value "[email protected]"

使用以下命令在JSON对象中更改单个值并将其保存到文件:

$json.roles.sql="Admin"
$json|ConvertTo-Json| Set-Content -Path C:\PS\userroles.json

删除JSON对象属性:

$json.PSObject.Properties.Remove("Email")

通过使用Invoke-Webrequest PowerShell CMDLET,您可以访问JSON HTTP API以从外部Web服务(站点)获取数据。例如,列出Google DNS服务以JSON格式返回的记录:

$site="woshub.com"
$rawresp=Invoke-WebRequest "https://dns.google/resolve?name=$site&type=A"
$rawjson = ConvertFrom-Json -InputObject $rawresp.Content
$rawjson.answer.data