2
1

PowerShellでJSON操作マスター:データ処理を劇的に簡単に

Last updated at Posted at 2024-07-19

はじめに

こんにちは!今回は、PowerShellを使ってJSONデータを操作する方法をマスターしていきます。JSONは現代のデータ交換形式として広く使用されており、APIレスポンスや設定ファイルなど、様々な場面で遭遇します。PowerShellを使えば、このJSONデータを簡単に処理できるんです。

image.png

1. JSONデータの読み込み

まずは、JSONデータを読み込む方法から見ていきましょう。

$jsonString = '{"name": "John Doe", "age": 30, "city": "New York"}'
$jsonObject = ConvertFrom-Json $jsonString

# オブジェクトのプロパティにアクセス
Write-Host $jsonObject.name  # 出力: John Doe
Write-Host $jsonObject.age   # 出力: 30

ConvertFrom-Json コマンドレットを使うことで、JSON文字列をPowerShellオブジェクトに変換できます。

2. JSONファイルの読み込み

JSONファイルから直接データを読み込むこともできます。

$jsonContent = Get-Content -Path "data.json" -Raw
$jsonObject = ConvertFrom-Json $jsonContent

-Raw パラメータを使用することで、ファイル全体を1つの文字列として読み込みます。

3. JSONデータの作成と出力

PowerShellオブジェクトからJSONデータを作成することも簡単です。

$person = @{
    name = "Jane Smith"
    age = 28
    city = "Los Angeles"
}

$jsonOutput = ConvertTo-Json $person
Write-Host $jsonOutput

ConvertTo-Json コマンドレットを使用して、PowerShellオブジェクトをJSON形式に変換できます。

4. JSONデータの更新

既存のJSONデータを更新する方法を見てみましょう。

$jsonString = '{"name": "John Doe", "age": 30, "city": "New York"}'
$jsonObject = ConvertFrom-Json $jsonString

# プロパティの更新
$jsonObject.age = 31
$jsonObject | Add-Member -Name "country" -Value "USA" -MemberType NoteProperty

# 更新されたJSONを出力
$updatedJson = ConvertTo-Json $jsonObject
Write-Host $updatedJson

Add-Member コマンドレットを使用して、新しいプロパティを追加することができます。

5. 複雑なJSONデータの操作

より複雑な構造のJSONデータも扱えます。

$complexJson = @"
{
    "employees": [
        {"name": "John", "department": "IT"},
        {"name": "Alice", "department": "HR"},
        {"name": "Bob", "department": "Finance"}
    ],
    "company": "TechCorp"
}
"@

$data = ConvertFrom-Json $complexJson

# 特定の条件に合う要素を取得
$itEmployees = $data.employees | Where-Object { $_.department -eq "IT" }

foreach ($employee in $itEmployees) {
    Write-Host "$($employee.name) works in IT"
}

Where-Object を使用することで、特定の条件に合う要素をフィルタリングできます。

6. JSONデータの深い階層へのアクセス

深い階層のJSONデータにアクセスする方法も見てみましょう。

$deepJson = @"
{
    "company": {
        "name": "TechCorp",
        "departments": {
            "IT": {
                "employees": [
                    {"name": "John", "role": "Developer"},
                    {"name": "Alice", "role": "Manager"}
                ]
            }
        }
    }
}
"@

$data = ConvertFrom-Json $deepJson

# 深い階層へのアクセス
$itEmployees = $data.company.departments.IT.employees

foreach ($employee in $itEmployees) {
    Write-Host "$($employee.name) is a $($employee.role) in IT"
}

ドット表記を使用することで、深い階層のデータにも簡単にアクセスできます。

まとめ

PowerShellを使ったJSONデータの操作は、思ったより簡単ですね!ここで紹介した技術を使えば、APIレスポンスの処理、設定ファイルの管理、データの変換など、様々な場面でJSONを効率的に扱うことができます。

より高度な操作や大規模なJSONデータの処理については、パフォーマンスの考慮が必要になる場合もあります。そのような場合は、System.Text.Json 名前空間のクラスを直接使用することも検討してみてください。

JSONの操作、マスターできましたか?これらの技術を活用して、データ処理を劇的に簡単にしていきましょう!
Happy coding!

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1