ConvertFrom-Json

將 JSON 格式的字串轉換成自定義物件。

語法

Default (預設值)

ConvertFrom-Json
    [-InputObject] <String>
    [<CommonParameters>]

Description

ConvertFrom-Json Cmdlet 會將 JavaScript 物件表示法 (JSON) 格式化的字串轉換成自定義 PSObject 或 Hashtable 物件,該物件具有 JSON 字串中每個字段的屬性。 網站通常會使用 JSON 來提供物件的文字表示法。 Cmdlet 會在處理 JSON 字串的每一行時,將屬性新增至新的物件。

JSON 標準允許重複的索引鍵名稱,這些名稱在 PSObject 和 哈希表 類型中禁止。 例如,如果 JSON 字串包含重複的索引鍵,則此 Cmdlet 只會使用最後一個索引鍵。 請參閱下列其他範例。

若要從任何對象產生 JSON 字串,請使用 ConvertTo-Json Cmdlet。

此 Cmdlet 已在 PowerShell 3.0 中引進。

備註

在 Windows PowerShell 5.1 中,ConvertFrom-Json 遇到 JSON 批注時傳回錯誤。 在 PowerShell 6 和更新版本中,Cmdlet 支援具有批注的 JSON。 Cmdlet 不會在 對象輸出中擷取 JSON 批注。 如需詳細資訊,請參閱 about_Comments 文章 JSON 批注 一節。

範例

範例 1:將 DateTime 物件轉換為 JSON 物件

此命令會使用 ConvertTo-Json 和 ConvertFrom-Json Cmdlet,將 DateTime 物件從 Get-Date Cmdlet 轉換成 JSON 物件,然後轉換成 PSCustomObject。

Get-Date | Select-Object -Property * | ConvertTo-Json | ConvertFrom-Json
DisplayHint : 2
DateTime    : Friday, January 13, 2012 8:06:31 PM
Date        : 1/13/2012 8:00:00 AM
Day         : 13
DayOfWeek   : 5
DayOfYear   : 13
Hour        : 20
Kind        : 2
Millisecond : 400
Minute      : 6
Month       : 1
Second      : 31
Ticks       : 634620819914009002
TimeOfDay   : @{Ticks=723914009002; Days=0; Hours=20; Milliseconds=400; Minutes=6; Seconds=31; TotalDays=0.83786343634490734; TotalHours=20.108722472277776; TotalMilliseconds=72391400.900200009; TotalMinutes=1206.5233483366667;TotalSeconds=72391.4009002}
Year        : 2012

此範例會使用 Select-Object Cmdlet 來取得 DateTime 物件的所有屬性。 它會使用 ConvertTo-Json Cmdlet,將 DateTime 物件轉換成格式化為 JSON 物件的字串,而 ConvertFrom-Json Cmdlet 將 JSON 格式化的字串轉換成 PSCustomObject 物件。

範例 2:從 Web 服務取得 JSON 字串,並將其轉換為 PowerShell 物件

此命令會使用 Invoke-WebRequest Cmdlet 從 Web 服務取得 JSON 字串,然後使用 ConvertFrom-Json Cmdlet 將 JSON 內容轉換成可在 PowerShell 中管理的物件。

# Ensures that Invoke-WebRequest uses TLS 1.2
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$j = Invoke-WebRequest 'https://api.github.com/repos/PowerShell/PowerShell/issues' |
    ConvertFrom-Json

您也可以使用 Invoke-RestMethod Cmdlet,其會自動將 JSON 內容轉換成物件。

範例 3:將 JSON 字串轉換成自定義物件

此範例示範如何使用 ConvertFrom-Json Cmdlet 將 JSON 檔案轉換成 PowerShell 自定義物件。

Get-Content -Raw JsonFile.json | ConvertFrom-Json

命令會使用 Get-Content Cmdlet 來取得 JSON 檔案中的字串。 Raw 參數會以單一 JSON 物件的形式傳回整個檔案。 然後,它會使用管線運算符,將分隔字串傳送至 ConvertFrom-Json Cmdlet,以將它轉換成自定義物件。

參數

-InputObject

指定要轉換成 JSON 物件的 JSON 字串。 輸入包含字串的變數,或輸入取得字串的命令或表達式。 您也可以將字串透過管道傳送至 ConvertFrom-Json。

需要 InputObject 參數,但其值可以是空字串。 當輸入物件是空字串時,ConvertFrom-Json 不會產生任何輸出。 InputObject 的值不能是 $null。

參數屬性

類型:String
預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:0
必要:True
來自管線的值:True
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

CommonParameters

此 Cmdlet 支援一般參數:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 如需詳細資訊,請參閱 about_CommonParameters。

輸入

String

您可以將 JSON 字串傳送至 ConvertFrom-Json。

輸出

PSCustomObject

備註

ConvertFrom-Json Cmdlet 是使用 JavaScriptSerializer 類別實作。

PSObject 類型會維護 JSON 字串中所呈現的屬性順序。 雖然在 JSON 字串中呈現的順序中將索引鍵/值組新增至 哈希表,但 哈希表 物件不會維持該順序。