Powershell:获取原始值 JSON

Powershell: Get value of a raw JSON

我有一个 JSON 文件,如下所示:

{
    "body": {
        "mode": "raw",
        "raw": "{\n    \"id\": \"middleware://so/998655555{{sguid}}\",\n    \"reference\": \"998655555{{sguid}}\",\n    \"branchCode\": \"1234\"\n }"
    }
}

现在,我想输出例如"branchCode"。

我尝试使用以下 PowerShell 命令:

$path = "file.json"
$raw = Get-Content $path -raw

$obj = ConvertFrom-Json $raw

$obj.body.raw.branchCode

很遗憾,我没有得到值。 PowerShell 似乎无法从原始 json.

中检索值

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

"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。在处理文本文件时始终指定编码,从而避免麻烦。