在 PowerShell 中将 JSON 对象写入文件
PowerShell 是一种非常强大的基于对象的语言,可用于创建结构化数据。因此,它比纯文本更容易使用。
PowerShell 自定义对象
PSCustomObject
是 PowerShell 对象的基础。它包含属性和值。
因此,PowerShell 也可以处理 JSON 对象。
让我们从示例 JSON 创建一个 JSON 自定义对象。我们已将 JSON 分配给 $MyJsonVar
变量。
$MyJsonVar = @"
{
"ExampleJson":{
"Fruit1":{
"Name":"Apple",
"Price":"`$10.00"
}
}
}
"@
输出:
我们需要使用 ConvertFrom-JSON
cmdlet 创建实际的 JSON 对象。这将创建真正的 PSCustomObject
。
让我们将新创建的 JSON 对象分配给 $MyJsonObject
变量。
$MyJsonObject = $MyJsonVar | ConvertFrom-Json
让我们显示新创建的 PSCustomObject
,一个 JSON 对象。
$MyJsonObject
输出:
你可以通过其属性访问 JSON 对象。
$MyJsonObject.ExampleJson.Fruit1.Price
$MyJsonObject.ExampleJson.Fruit1.Name
输出:
因此,已经确认我们得到了一个名为 $MyJsonObject
的适当 PowerShell 自定义对象。
PowerShell JSON 对象到 JSON 字符串
ConvertTo-Json
cmdlet 可以将现有的自定义对象转换为 JSON 字符串。这将是 JSON 格式的纯文本。
语法:
ConvertTo-Json
[-InputObject] <Object>
[-Depth <Int32>]
[-Compress]
[-EnumsAsStrings]
[-AsArray]
[-EscapeHandling <StringEscapeHandling>]
[<CommonParameters>]
以上所有参数对于 ConvertTo-Json
cmdlet 都是可选的。
-Depth
参数可以指定 JSON 字符串中的级别数。这是一个重要的参数,需要非常小心地使用。
错误使用此参数可能会导致数据丢失。默认值为 2。
-InputObject
参数指定需要转换为 JSON 字符串的自定义对象。我们可以轻松地将自定义对象通过管道传递给 ConvertTo-Json
cmdlet。
我们可以通过管道 (|
) 发送 $MyJsonObject
以将自定义对象转换为 JSON 字符串。
$MyJsonObject | ConvertTo-Json
输出:
将 JSON 字符串保存到文件
可以使用 PowerShell 将 JSON 字符串保存到文件中。我们可以将 JSON 字符串输出通过管道传输到 Out-File
cmdlet。
可以指定我们需要创建 .json
文件的路径。
$MyJsonObject | ConvertTo-Json | Out-File "D:\misc\example.json"
路径 "D\misc\example.json"
可能会有所不同。这将在给定的目录结构中创建一个 example.json
文件。
输出:
JSON 自定义对象已保存到 JSON 格式的 example.json
文件中。
Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.