我有一个JSON文件,如下所示:
{
"body": {
"mode": "raw",
"raw": "{\n \"id\": \"middleware://so/998655555{{sguid}}\",\n \"reference\": \"998655555{{sguid}}\",\n \"branchCode\": \"1234\"\n }"
}
}
现在,我想输出例如“分行代码”。
我使用以下PowerShell命令尝试了它:
$path = "file.json"
$raw = Get-Content $path -raw
$obj = ConvertFrom-Json $raw
$obj.body.raw.branchCode
不幸的是,我没有得到这个价值。看起来PowerShell有一个问题就是从原始json中检索值。
如果有人可以帮助我,我会很高兴。
答案 0 :(得分:5)
“raw”的值本身就是JSON。
您必须从JSON 转换两次。
$data = Get-Content "file.json" -Raw -Encoding UTF8 | ConvertFrom-Json
$body = $data.body.raw | ConvertFrom-Json
$body.branchCode
打印
1234
请注意,在读取和写入文本文件时,应始终明确指定编码。出于JSON的目的(坦率地说,几乎所有其他目的),UTF-8是合适的选择。
不幸的是,Get-Content
/ Set-Content
默认为UTF-8。通过在处理文本文件时始终指定编码来避免麻烦。