Powershell: получить значение необработанного JSON - PullRequest
0 голосов
/ 07 июня 2018

У меня есть файл 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.

Я был бы очень рад, если бы кто-нибудь мог мне помочь.

1 Ответ

0 голосов
/ 07 июня 2018

Значение «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.Избавьте себя от неприятностей, всегда задавая кодировку при работе с текстовыми файлами.

...