在 PowerShell 中将 JSON 对象写入文件

Migel Hewage Nimesha 2024年2月15日
  1. PowerShell 自定义对象
  2. PowerShell JSON 对象到 JSON 字符串
  3. 将 JSON 字符串保存到文件
在 PowerShell 中将 JSON 对象写入文件

PowerShell 是一种非常强大的基于对象的语言,可用于创建结构化数据。因此,它比纯文本更容易使用。

PowerShell 自定义对象

PSCustomObject 是 PowerShell 对象的基础。它包含属性和值。

因此,PowerShell 也可以处理 JSON 对象。

让我们从示例 JSON 创建一个 JSON 自定义对象。我们已将 JSON 分配给 $MyJsonVar 变量。

$MyJsonVar = @"
 {
   "ExampleJson":{
     "Fruit1":{
       "Name":"Apple",
       "Price":"`$10.00"
     }
  }
 }
"@

输出:

PowerShell 自定义对象 1

我们需要使用 ConvertFrom-JSON cmdlet 创建实际的 JSON 对象。这将创建真正的 PSCustomObject

让我们将新创建的 JSON 对象分配给 $MyJsonObject 变量。

$MyJsonObject = $MyJsonVar | ConvertFrom-Json

让我们显示新创建的 PSCustomObject,一个 JSON 对象。

$MyJsonObject

输出:

PowerShell 自定义对象 2

你可以通过其属性访问 JSON 对象。

$MyJsonObject.ExampleJson.Fruit1.Price
$MyJsonObject.ExampleJson.Fruit1.Name

输出:

PowerShell 自定义对象 3

因此,已经确认我们得到了一个名为 $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 对象到 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 自定义对象已保存到 JSON 格式的 example.json 文件中。

Migel Hewage Nimesha avatar Migel Hewage Nimesha avatar

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.

相关文章 - PowerShell JSON