在 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.