如何将 ConvertFrom-Json 中的字符串视为文字?
How to treat strings in ConvertFrom-Json as literals?
我正在使用以下 JSON 格式的文件导入一组配置值:
$configFileContent = Get-Content -Path run.config | ConvertFrom-Json
这会产生一个结果,其中包含以下内容(变量 $configFileContent
的内容):
{
"config-values":{
"path":"..\temp-path"
}
}
接下来,我尝试从该配置中访问 path 的值,如下所示:
$conf = $configFileContent.'config-values'
$tempPath = $conf.'path'
..但这失败了,因为 ..\temp-path
中的字符 \t
被解释为表示 Tab 的转义序列。这通过打印 $conf
的内容很清楚,现在是:
path
----
.. emp-path
如您所见,Path
的值是 .. <tab> emp-path
,而不是预期的 ..\temp-path
。显然,当我试图将变量 $tempPath
用作实际路径时,这会在以后造成麻烦。
如何让 Powershell 按预期解释它 - 即,将字符串视为此处的文字?
我知道这可能不是您要找的答案。
但快速解决方法是在 JSON 文件
中使用双反斜杠
这也是所有其他语言的常见解决方法
{
"config-values":{
"path":"..\temp-path"
}
}
我正在使用以下 JSON 格式的文件导入一组配置值:
$configFileContent = Get-Content -Path run.config | ConvertFrom-Json
这会产生一个结果,其中包含以下内容(变量 $configFileContent
的内容):
{
"config-values":{
"path":"..\temp-path"
}
}
接下来,我尝试从该配置中访问 path 的值,如下所示:
$conf = $configFileContent.'config-values'
$tempPath = $conf.'path'
..但这失败了,因为 ..\temp-path
中的字符 \t
被解释为表示 Tab 的转义序列。这通过打印 $conf
的内容很清楚,现在是:
path
----
.. emp-path
如您所见,Path
的值是 .. <tab> emp-path
,而不是预期的 ..\temp-path
。显然,当我试图将变量 $tempPath
用作实际路径时,这会在以后造成麻烦。
如何让 Powershell 按预期解释它 - 即,将字符串视为此处的文字?
我知道这可能不是您要找的答案。 但快速解决方法是在 JSON 文件
中使用双反斜杠这也是所有其他语言的常见解决方法
{
"config-values":{
"path":"..\temp-path"
}
}