PowerShellでJSON読み込みを行う方法と具体的な手順を解説

本ページはプロモーションが含まれています

PowerShellを使って、JSONデータを扱う方法を知りたいと考えていませんか?PowerShellはWindows環境で強力なスクリプト言語として広く使われており、JSON形式のデータを簡単に読み込み、操作することが可能です。この記事では、「PowerShellでJSON読み込みを行う方法」について、具体的な手順とコマンドレットを詳しく解説します。

まず、PowerShellでJSONデータをオブジェクトに変換する際に必要なコマンドレットであるConvertFrom-Jsonの使い方から始めます。さらに、JSONデータをパースし、必要なキーの一覧を抽出したり、ループ処理でデータを操作する方法についても紹介します。

また、JSONデータをCSV形式や文字列に変換して出力する方法や、ネストされたJSONデータの扱い方、連想配列を使ったデータ操作についても解説します。これらの操作を知ることで、PowerShellを使ってより効率的にJSONデータを管理できるようになります。

PowerShellでのJSON操作に関するさまざまな方法を詳しく学びたい方は、ぜひこの記事を参考にしてみてください。

記事のポイント
  1. PowerShellでのJSONデータの読み込み方法
  2. ConvertFrom-Jsonコマンドレットの具体的な使い方
  3. JSONデータをCSVや文字列に変換する方法
  4. ループ処理やキー抽出によるJSONデータの操作方法
目次

PowerShellでJSON読み込みを行う方法

  • ConvertFrom-Jsonコマンドレットの使い方
  • JSONデータのパースと表示
  • JSONから必要なキーの一覧を抽出する方法
  • ループ処理を使ったJSONデータの操作

ConvertFrom-Jsonコマンドレットの使い方

ConvertFrom-Jsonコマンドレットは、PowerShellでJSONデータを簡単に扱うためのコマンドです。このコマンドを使用することで、JSON形式の文字列をPowerShellオブジェクトに変換し、データの操作や抽出が可能になります。以下に具体的な使い方を紹介します。

基本的な使い方

JSON形式のデータを読み込む際には、まず対象のJSONデータを変数に格納し、ConvertFrom-Jsonを使用してPowerShellオブジェクトに変換します。例えば、次のように実行します。

$json = '{"name": "John", "age": 30}'
$data = $json | ConvertFrom-Json

この例では、$jsonに格納された文字列をConvertFrom-Jsonで変換し、$dataという変数にPowerShellオブジェクトとして代入します。

ファイルから読み込む方法

JSONデータがファイルに保存されている場合は、Get-Contentでそのファイルの内容を読み込み、ConvertFrom-Jsonで変換できます。例えば、次のように実行します。

$jsonData = Get-Content -Path "C:\data\sample.json"
$data = $jsonData | ConvertFrom-Json

この方法により、ファイル内のJSONデータをPowerShellオブジェクトとして使用できます。

複雑なJSONデータの扱い

ネストされたJSONデータもConvertFrom-Jsonで同様に扱えます。PowerShellオブジェクトに変換後、プロパティをドット表記で参照できます。例えば、次のようなネストされたデータの場合:

$json = '{"person": {"name": "John", "age": 30}}'
$data = $json | ConvertFrom-Json
$data.person.name

この例では、personオブジェクト内のnameプロパティにアクセスしています。

JSONデータのパースと表示

PowerShellでJSONデータをパース(解析)し、表示する作業はとても簡単です。ここでは、その基本的な方法を解説します。

JSONデータのパース

JSON形式の文字列は、PowerShellにおいてテキストとして扱われますが、ConvertFrom-Jsonコマンドレットを使うことで、このテキストをPowerShellのオブジェクトに変換(パース)できます。次の例では、JSON形式の文字列をオブジェクトに変換し、その内容を確認します。

$json = '{"name": "Alice", "age": 25, "city": "New York"}'
$data = $json | ConvertFrom-Json

このコードにより、$dataにはJSONデータの各フィールドがオブジェクトのプロパティとして格納されます。

データの表示方法

JSONをパースした後、PowerShellのWrite-Outputや単に変数名を指定することで、変換されたデータを表示できます。例えば、次のように実行します。

$data.name
$data.age
$data.city

この例では、変数$dataのプロパティnameagecityをそれぞれ表示しています。

全体を表示する

JSONデータ全体をまとめて確認したい場合は、オブジェクト全体をそのまま表示できます。以下のように実行することで、JSONの内容がPowerShellオブジェクト形式で出力されます。

$data | Format-List

この方法により、データの全プロパティがリスト形式で表示され、複雑なJSONでも確認しやすくなります。

ネストされたデータの表示

JSONデータにネストされたオブジェクトが含まれている場合も、ドット表記を用いて特定のプロパティにアクセス可能です。例えば、次のように実行します。

$json = '{"person": {"name": "Bob", "address": {"city": "Tokyo", "zip": "100-0001"}}}'
$data = $json | ConvertFrom-Json
$data.person.address.city

この例では、ネストされたaddressオブジェクトのcityプロパティを表示しています。

このように、PowerShellではConvertFrom-Jsonを使って簡単にJSONデータをパースし、データを表示することができます。

JSONから必要なキーの一覧を抽出する方法

PowerShellを使ってJSONデータから特定のキーの一覧を抽出するには、ConvertFrom-Jsonコマンドレットを活用してJSONをオブジェクトに変換し、その後キー情報を取得することができます。具体的には以下の手順で行います。

JSONデータの読み込み

まず、JSONデータをPowerShellオブジェクトに変換します。例えば、以下のようなJSONデータがあるとします。

$json = '{"name": "John", "age": 30, "city": "New York"}'
$data = $json | ConvertFrom-Json

このコードでは、JSONデータが変換され、$dataというオブジェクトに格納されます。

キーの抽出

PowerShellオブジェクトのキーを取得するには、PSObject.Properties.Nameを使います。このコマンドを実行することで、JSONオブジェクト内のすべてのキーを一覧表示できます。

$keys = $data.PSObject.Properties.Name
$keys

この例では、nameagecityという3つのキーが表示されます。

特定のキーを抽出する

特定のキーだけを取得したい場合は、Where-Objectを使用してフィルタリングが可能です。例えば、名前に「n」が含まれるキーを抽出する場合は、以下のように実行します。

$filteredKeys = $data.PSObject.Properties.Name | Where-Object { $_ -like "*n*" }
$filteredKeys

この例では、nameというキーが抽出されます。

ネストされたキーの扱い

JSONがネストされている場合でも同様にキーを取得できます。ネストされた部分のキーを抽出するには、まずそのネストされたオブジェクトにアクセスし、同様にキーを取得します。

$json = '{"person": {"name": "Alice", "age": 25}}'
$data = $json | ConvertFrom-Json
$personKeys = $data.person.PSObject.Properties.Name
$personKeys

この例では、personオブジェクト内のnameageというキーが表示されます。


ループ処理を使ったJSONデータの操作

PowerShellでJSONデータをループ処理によって操作することで、複数のデータを効率よく処理したり、必要な情報を順次抽出したりすることが可能です。以下にその基本的な方法を紹介します。

基本的なループ処理

配列形式のJSONデータを操作する場合、ForEach-Objectコマンドレットを使ってループ処理を行います。例えば、次のようなJSONデータがあったとします。

$json = '[{"name": "Alice", "age": 25}, {"name": "Bob", "age": 30}]'
$data = $json | ConvertFrom-Json

これをループで処理し、それぞれのnameフィールドを表示するには、以下のように書けます。

powershellコードをコピーする$data | ForEach-Object { $_.name }

このコードを実行すると、AliceBobという名前が順次表示されます。

ネストされたJSONデータのループ処理

JSONがネストされた構造を持つ場合でも、ループ処理を使って個々のデータにアクセスできます。例えば、次のようなネストされたJSONデータを例にとります。

$json = '[{"person": {"name": "Alice", "age": 25}}, {"person": {"name": "Bob", "age": 30}}]'
$data = $json | ConvertFrom-Json

ここでもForEach-Objectを使い、ネストされたpersonオブジェクトにアクセスします。

$data | ForEach-Object { $_.person.name }

このコードを実行すると、同様にAliceBobという名前が表示されます。

条件付きループ処理

ループ処理中に条件を付けて、特定のデータに対してのみ操作を行うことも可能です。例えば、年齢が30以上の人物の名前を表示する場合は、以下のように実行できます。

$data | ForEach-Object { if ($_.person.age -ge 30) { $_.person.name } }

このコードでは、年齢が30以上のBobだけが表示されます。

ループ処理でデータを集計する

ループを使ってデータを集計することもできます。例えば、年齢の合計を計算するには、以下のようにループ内で集計処理を行います。

$totalAge = 0
$data | ForEach-Object { $totalAge += $_.person.age }
$totalAge

このコードでは、年齢の合計が計算され、55(25 + 30)が表示されます。

PowerShellのループ処理を使うことで、JSONデータを効率的に操作できるだけでなく、条件付きでの抽出や集計も簡単に行えます。

PowerShellでのJSON読み込み後の変換方法

  • JSONをCSV形式に変換する方法
  • JSONを文字列に変換する方法
  • JSONデータの一部を抽出して出力する方法
  • 連想配列を使ったデータの扱い方

JSONをCSV形式に変換する方法

PowerShellでは、JSONデータをCSV形式に変換するのは簡単で、ConvertFrom-Jsonコマンドレットを使ってデータをオブジェクトに変換し、それをExport-CsvでCSVファイルとして出力します。以下に具体的な手順を紹介します。

JSONデータをオブジェクトに変換

まず、JSONデータをConvertFrom-JsonでPowerShellオブジェクトに変換します。例えば、次のようなJSONデータがあるとします。

$json = '[{"name": "Alice", "age": 25}, {"name": "Bob", "age": 30}]'
$data = $json | ConvertFrom-Json

CSV形式に変換して保存

Export-Csvコマンドレットを使って、変換したデータをCSV形式で保存します。次のコマンドで、JSONデータがCSVファイルとして出力されます。

$data | Export-Csv -Path "C:\output\data.csv" -NoTypeInformation

-NoTypeInformationを付けることで、CSVファイルに余計な型情報が含まれなくなります。この方法で、指定されたパスにCSVファイルが作成されます。

CSVファイルの確認

出力されたCSVファイルは、Excelやテキストエディタで開くことができます。上記の例の場合、ファイルには次のようなデータが含まれます。

"name","age"
"Alice","25"
"Bob","30"

ネストされたJSONデータの変換

ネストされたJSONデータをCSVに変換する場合は、事前にデータをフラット化(平坦化)する必要があります。PowerShellでネストされたデータをフラットにしてからCSVに変換する例を示します。

$json = '[{"person": {"name": "Alice", "age": 25}}, {"person": {"name": "Bob", "age": 30}}]'
$data = $json | ConvertFrom-Json
$flattenedData = $data | ForEach-Object { [pscustomobject]@{name = $_.person.name; age = $_.person.age} }
$flattenedData | Export-Csv -Path "C:\output\flattened_data.csv" -NoTypeInformation

これにより、ネストされたオブジェクトも正しくCSV形式で出力されます。


JSONを文字列に変換する方法

JSONデータを文字列として扱いたい場合、PowerShellではConvertTo-Jsonコマンドレットを使用します。このコマンドを使うことで、PowerShellオブジェクトをJSON形式の文字列に戻すことができます。以下に手順を紹介します。

JSONからオブジェクトに変換

まず、既存のJSONデータをオブジェクトに変換します。

$json = '{"name": "Alice", "age": 25}'
$data = $json | ConvertFrom-Json

オブジェクトを文字列に変換

変換したオブジェクトを再びJSON形式の文字列に戻すには、ConvertTo-Jsonを使用します。これにより、PowerShellオブジェクトが文字列化されます。

$jsonString = $data | ConvertTo-Json
$jsonString

このコマンドを実行すると、次のような結果が得られます。

{
    "name": "Alice",
    "age": 25
}

インデントなしで文字列化する

デフォルトでは、ConvertTo-Jsonはインデント付きの整形された文字列を出力しますが、-Compressスイッチを使うことでインデントを省略したコンパクトなJSON文字列を生成できます。

$jsonStringCompact = $data | ConvertTo-Json -Compress
$jsonStringCompact

この場合、出力は次のようになります。

{"name":"Alice","age":25}

文字列として出力したJSONをファイルに保存

JSON形式の文字列をファイルに保存したい場合は、Set-Contentコマンドレットを使用して簡単にファイル出力が可能です。

$jsonString | Set-Content -Path "C:\output\output.json"

これにより、JSONデータが文字列形式でファイルに保存されます。

JSONデータの一部を抽出して出力する方法

PowerShellでJSONデータの一部を抽出して出力するには、ConvertFrom-Jsonコマンドレットを使ってJSONデータをオブジェクトに変換し、その後特定のプロパティにアクセスします。以下に具体的な方法を紹介します。

JSONデータの読み込み

まず、JSONデータを読み込んでPowerShellオブジェクトに変換します。次の例では、シンプルなJSONデータを扱っています。

$json = '{"name": "John", "age": 30, "city": "New York"}'
$data = $json | ConvertFrom-Json

特定のプロパティを抽出する

$dataオブジェクトの特定のプロパティ、例えばnameだけを抽出する場合、以下のようにアクセスします。

$data.name

これにより、Johnという値が出力されます。必要なプロパティにドット表記でアクセスするだけで、その部分のデータを簡単に抽出可能です。

複数のプロパティを抽出する

複数のプロパティを同時に抽出する場合は、選択するプロパティをカンマ区切りで指定します。

$data | Select-Object name, city

このコードを実行すると、次のようにnamecityが出力されます。

name   city
----   ----
John   New York

ネストされたデータの抽出

JSONデータがネストされている場合、ネストされた部分もドット表記を使ってアクセスできます。次の例では、ネストされたオブジェクトaddresscityだけを抽出します。

$json = '{"name": "Alice", "address": {"city": "Tokyo", "zip": "100-0001"}}'
$data = $json | ConvertFrom-Json
$data.address.city

この場合、Tokyoという値が出力されます。

フィルタリングしてデータを抽出する

JSONデータが配列形式の場合、Where-Objectを使用して特定の条件に合うデータを抽出できます。以下の例では、年齢が30以上のデータを抽出します。

$json = '[{"name": "Alice", "age": 25}, {"name": "Bob", "age": 30}]'
$data = $json | ConvertFrom-Json
$data | Where-Object { $_.age -ge 30 }

このコードを実行すると、Bobのデータだけが抽出されます。

連想配列を使ったデータの扱い方

連想配列(ハッシュテーブル)は、キーと値のペアでデータを管理できる便利なデータ構造です。PowerShellでもよく使われ、特にJSONデータを扱う際に役立ちます。ここでは、連想配列を使ったデータの扱い方を紹介します。

連想配列の作成

まず、連想配列を作成するには、@{}を使います。キーと値をペアで記述します。以下は、名前と年齢を含むシンプルな連想配列の例です。

$person = @{
    "name" = "Alice"
    "age" = 25
}

データへのアクセス

作成した連想配列の特定の値にアクセスするには、キーを指定します。例えば、名前を取得する場合は以下のように実行します。

$person["name"]

これでAliceという値が出力されます。

データの追加・更新

連想配列に新しいキーと値を追加したり、既存の値を更新することも簡単です。例えば、新しいキーcityを追加し、ageを更新するには次のようにします。

$person["city"] = "Tokyo"
$person["age"] = 30

このコードを実行後、連想配列にはcityが追加され、ageが30に更新されます。

キーの一覧を取得する

連想配列のすべてのキーを取得したい場合は、次のようにKeysプロパティを使用します。

$person.Keys

これにより、nameagecityというキーの一覧が表示されます。

連想配列をループで処理する

連想配列のキーと値をループ処理で扱うことも可能です。ForEach-Objectを使って、キーと値のペアを一つずつ処理できます。

$person | ForEach-Object {
    $key = $_.Key
    $value = $_.Value
    "$key: $value"
}

このコードを実行すると、name: Aliceage: 30city: Tokyoといった形式でデータが出力されます。

JSONデータとして使用する

連想配列は、そのままConvertTo-Jsonを使ってJSON形式に変換できます。以下のように連想配列をJSON文字列に変換します。

$json = $person | ConvertTo-Json
$json

このコードを実行すると、連想配列が次のようなJSON形式で出力されます。

{
    "name": "Alice",
    "age": 30,
    "city": "Tokyo"
}

連想配列は、データの柔軟な管理と操作に非常に役立つため、PowerShellでの効率的なスクリプト作成に欠かせない要素です。

PowerShellでJSON読み込みを行う方法のまとめ

記事のポイントをまとめます。

  • PowerShellでJSONを読み込む際は、ConvertFrom-Jsonコマンドレットを使用する
  • ConvertFrom-JsonはJSON形式の文字列をPowerShellオブジェクトに変換できる
  • JSONデータはファイルからGet-Contentで読み込むことが可能
  • ネストされたJSONデータもConvertFrom-Jsonで処理できる
  • JSONデータのパース後、特定のプロパティにドット表記でアクセスできる
  • JSONから必要なキーの一覧を抽出するにはPSObject.Properties.Nameを使う
  • Where-Objectを使うと、特定のキーだけを抽出できる
  • 配列形式のJSONはForEach-Objectでループ処理が可能
  • ネストされたJSONデータもループ処理で個別にアクセスできる
  • ループ処理で条件を指定してデータを抽出することができる
  • JSONデータをCSVに変換するにはExport-Csvを使う
  • ConvertTo-JsonでPowerShellオブジェクトをJSON形式の文字列に戻せる
  • ネストされたJSONをフラット化してCSVに変換できる
  • JSONデータの一部を抽出して表示するにはドット表記でアクセスする
  • 連想配列はJSONデータの管理に便利で、簡単に操作可能
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次