PowerShell で JSON ファイルを読み取る

Aamir Khan 2024年2月15日
  1. Get-Content を使用して、PowerShell で JSON を文字列として読み取る
  2. ConvertFrom-Json を使用して、PowerShell で JSON をカスタム オブジェクトとして読み取る
  3. Invoke-WebRequest を使用して、PowerShell で Web から JSON を読み取る
PowerShell で JSON ファイルを読み取る

このチュートリアルでは、PowerShell で JSON ファイルを読み取る方法を示します。

Get-Content を使用して、PowerShell で JSON を文字列として読み取る

Get-Content コマンドは、アイテムのコンテンツを読み取る PowerShell コマンドです。 このコマンドは、アイテムの場所を指定する Path パラメータを取ります。 コンテンツは通常、テキスト データです。

JSON 形式の文字列もテキスト データです。 このコマンドは、JSON ファイルを読み取り、それを文字列としてシェルに出力できます。

次のコマンドは、JSON ファイルを文字列として読み取ります。

Get-Content transactions.json

出力:

[
    {
        "Date": "19/5/2022",
        "ProductId": "0001",
        "ProductName": "Fizzy Drink",
        "Cost": "2.32",
        "Currency": "USD"
    },
    {
        "Date": "16/5/2022",
        "ProductId": "0002",
        "ProductName": "Dark Chocolate",
        "Cost": "6.52",
        "Currency": "USD"
    },
    {
        "Date": "10/5/2022",
        "ProductId": "0003",
        "ProductName": "Snacks",
        "Cost": "4.2",
        "Currency": "USD"
    }
]

ConvertFrom-Json を使用して、PowerShell で JSON をカスタム オブジェクトとして読み取る

ConvertFrom-Json は、JSON 形式の文字列を PowerShell カスタム オブジェクトまたは PSCustomObject に変換する PowerShell コマンドです。 このオブジェクトには、JSON フィールドに対応するすべてのプロパティが含まれています。

次のコマンドは、Get-Content を ConvertFrom-Json と組み合わせて、JSON を PSCustomObject として読み取ります。

Get-Content "transactions.json" | ConvertFrom-Json

出力:

Date        : 19/5/2022
ProductId   : 0001
ProductName : Fizzy Drink
Cost        : 2.32
Currency    : USD

Date        : 16/5/2022
ProductId   : 0002
ProductName : Dark Chocolate
Cost        : 6.52
Currency    : USD

Date        : 10/5/2022
ProductId   : 0003
ProductName : Snacks
Cost        : 4.2
Currency    : USD

Invoke-WebRequest を使用して、PowerShell で Web から JSON を読み取る

JSON は、Web でクライアントとサーバーの通信に一般的に使用されるデータ交換形式です。 クライアントが HTTP/HTTPS 要求をサーバーに送信すると、その結果、サーバーは要求されたデータを JSON として返します。

PowerShell クライアントとサーバーの通信図

Invoke-WebRequest は、指定された URI に HTTP リクエストを送信します。 サーバーはリクエストを受け取り、それに応じて JSON で応答します。

次のコマンドは、Web 要求をサーバーに送信し、ConvertFrom-Json を使用して JSON を解析します。

Invoke-WebRequest -Uri https://my-json-server.typicode.com/typicode/demo/posts | ConvertFrom-Json

出力:

id title
-- -----
 1 Post 1
 2 Post 2
 3 Post 3

関連記事 - PowerShell JSON