在 PowerShell 中將 JSON 物件寫入檔案

Migel Hewage Nimesha 2023年1月30日 2022年5月31日
  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