
如果您在Windows系统中需要将JSON格式的字符串转换为PowerShell可操作的对象,则可以使用内置命令ConvertFrom-Json。以下是实现此目标的多种方法:
一、使用ConvertFrom-Json解析本地JSON文件
该方法适用于已保存为.json扩展名的文本文件,PowerShell会读取文件内容并将其反序列化为自定义对象或哈希表。
1、打开PowerShell窗口(以管理员或普通用户身份均可)。
2、输入命令:Get-Content -Path “C:\data\config.json” | ConvertFrom-Json。
3、确认JSON文件路径正确且文件编码为UTF-8或UTF-8无BOM格式。
二、直接解析JSON字符串
当JSON数据以字符串形式存在于变量或脚本中时,可跳过文件读取步骤,直接传入ConvertFrom-Json进行解析。
1、定义JSON字符串变量:$jsonString = ‘{ “name”: “Alice”, “age”: 30, “city”: “Beijing” }’。
2、执行解析:$obj = $jsonString | ConvertFrom-Json。
3、访问属性:$obj.name 将返回 Alice。
三、处理嵌套JSON结构
对于包含数组或深层嵌套对象的JSON,ConvertFrom-Json会自动构建层级化的PSCustomObject,支持点号链式访问。
1、准备嵌套JSON字符串:$nested = ‘{ “user”: { “profile”: { “id”: 123, “tags”: [“admin”, “dev”] } } }’。
2、解析为对象:$data = $nested | ConvertFrom-Json。
3、提取嵌套值:$data.user.profile.id 返回 123;$data.user.profile.tags[0] 返回 admin。
四、解析含Unicode字符的JSON
当JSON中包含中文、日文等Unicode字符时,需确保输入流正确识别编码,避免乱码或解析失败。
1、使用Get-Content时显式指定编码:Get-Content -Path “C:\data\zh.json” -Encoding UTF8 | ConvertFrom-Json。
2、若从网络获取JSON(如Invoke-RestMethod),默认已处理UTF-8,无需额外设置。
3、验证结果是否含正确中文:$result.title 应输出原始JSON中的中文字段值。
五、错误处理与无效JSON检测
ConvertFrom-Json在遇到语法错误时会抛出终止异常,可通过try/catch捕获并提供友好提示。
1、封装解析逻辑:try { $valid = $badJson | ConvertFrom-Json } catch { Write-Host “JSON格式错误:$($_.Exception.Message)” -ForegroundColor Red }。
2、检查输入是否为空或仅含空白:if ([string]::IsNullOrWhiteSpace($inputJson)) { throw “输入JSON为空” }。
3、使用正则粗略校验是否含基本JSON结构:$inputJson -match ‘^\s*\{.*\}\s*$|\s*\[.*\]\s*$’。

评论(0)