在 PowerShell 中处理 JSON 数据变得越来越常见,特别是在与 Web API 交互或处理配置文件时。本文将介绍一些实用的 JSON 处理技巧。
首先,让我们看看如何创建和转换 JSON 数据:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| $userData = @{ name = "张三" age = 30 hobbies = @("读书", "编程", "摄影") contact = @{ email = "zhangsan@example.com" phone = "123-456-7890" } }
$jsonString = $userData | ConvertTo-Json -Depth 10 Write-Host "JSON 字符串:" Write-Host $jsonString
$object = $jsonString | ConvertFrom-Json Write-Host "`n转换回对象:" $object | Format-List
|
处理复杂的 JSON 数据时,我们可以使用自定义对象:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| $customObject = [PSCustomObject]@{ id = 1 title = "PowerShell 技巧" author = "李四" tags = @("PowerShell", "自动化", "脚本") metadata = @{ created = Get-Date version = "1.0.0" } }
$customObject | ConvertTo-Json -Depth 10 | Set-Content "article.json"
$loadedData = Get-Content "article.json" | ConvertFrom-Json
|
处理 API 响应时的一些实用技巧:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| $apiResponse = @' { "status": "success", "data": { "users": [ { "id": 1, "name": "王五", "role": "admin" }, { "id": 2, "name": "赵六", "role": "user" } ], "total": 2 } } '@
$response = $apiResponse | ConvertFrom-Json $adminUsers = $response.data.users | Where-Object { $_.role -eq "admin" } Write-Host "管理员用户:" $adminUsers | Format-Table
|
处理大型 JSON 文件时的性能优化:
1 2 3 4 5 6 7 8 9 10 11 12 13
| $jsonStream = [System.IO.File]::OpenRead("large-data.json") $reader = [System.IO.StreamReader]::new($jsonStream) $jsonText = $reader.ReadToEnd() $reader.Close() $jsonStream.Close()
Add-Type -AssemblyName System.Text.Json $jsonDoc = [System.Text.Json.JsonDocument]::Parse($jsonText)
$value = $jsonDoc.RootElement.GetProperty("specificField").GetString()
|
一些实用的 JSON 处理技巧:
使用 -Compress
参数创建紧凑的 JSON:
1
| $data | ConvertTo-Json -Compress
|
处理日期时间格式:
1 2 3
| $dateObject = @{ timestamp = (Get-Date).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ") } | ConvertTo-Json
|
验证 JSON 格式:
1 2 3 4 5 6 7 8 9 10
| function Test-JsonFormat { param([string]$JsonString) try { $null = $JsonString | ConvertFrom-Json return $true } catch { return $false } }
|
这些技巧将帮助您更有效地处理 JSON 数据。记住,在处理敏感数据时,始终要注意数据安全性,并考虑使用适当的加密方法。