【问题标题】:How to treat strings in ConvertFrom-Json as literals?如何将 ConvertFrom-Json 中的字符串视为文字?
【发布时间】:2019-10-04 06:31:05
【问题描述】:

我正在使用以下命令从 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 解析器。 JSON 中的反斜杠需要转义 ("path":"..\\temp-path")。 Related。本质上,您需要修复输入数据。

标签: json powershell escaping string-literals


【解决方案1】:

我知道这可能不是您正在寻找的答案。 但快速解决方法是在 JSON 文件中使用双反斜杠

这也是所有其他语言的常见解决方法

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

【讨论】:

  • 我明白了,这是有道理的。我想我不认为它可能是 JSON 语言的实际属性,但它显然是。感谢您的意见。
猜你喜欢
  • 2016-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-26
  • 2021-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多