Powershell:获取原始JSON的价值

时间:2018-06-07 11:25:22

标签: json powershell powershell-v3.0

我有一个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中检索值。

如果有人可以帮助我,我会很高兴。

1 个答案:

答案 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。通过在处理文本文件时始终指定编码来避免麻烦。