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