Как обрабатывать строки в ConvertFrom-Json как литералы? - PullRequest
1 голос
/ 04 октября 2019

Я импортирую набор значений конфигурации из файла в формате JSON, используя следующее:

$configFileContent = Get-Content -Path run.config | ConvertFrom-Json

Это приводит к результату, который, помимо прочего, содержит следующее (содержимое переменной $configFileContent):

{
    "config-values":{
        "path":"..\temp-path"
    }
}

Далее я пытаюсь получить доступ к значению path из этой конфигурации следующим образом:

$conf = $configFileContent.'config-values'
$tempPath = $conf.'path'

.. но это не удается из-зачтобы символы \t в ..\temp-path интерпретировались как escape-последовательность, представляющая вместо этого Tab . Это ясно, если напечатать содержимое $conf, которое теперь:

path
----
..      emp-path

Как видите, значение Path равно .. <tab> emp-path вместо ..\temp-path, как и предполагалось. Очевидно, это вызывает проблемы позже, когда я пытаюсь использовать переменную $tempPath в качестве фактического пути.

Как я могу заставить Powershell интерпретировать это так, как задумано - то есть трактовать строки как литералы здесь?

1 Ответ

1 голос
/ 04 октября 2019

Я понимаю, что это может быть не тот ответ, который вы ищете. Но быстрое решение заключается в использовании двойной обратной косой черты в вашем файле JSON

. Это также общий обходной путь для всех других языков

{
    "config-values":{
        "path":"..\\temp-path"
    }
}
...