gpt4 book ai didi

json - 如何防止PowerShell将\添加到字符串

转载 作者:行者123 更新时间:2023-12-03 00:58:16 27 4
gpt4 key购买 nike

我目前正在使用Powershell编辑JSON

我的JSON看起来像这样:

   {
"value": ["E_"]
}

我只想在 E_之后添加一个特定的数字。
结果应如下所示:
{
"value": ["E_5"]
}

我的PS脚本:
$tdePath = 'C:\temp\tde.csv'

$dirName = Get-ChildItem -Path $rootDir -Filter TDE_Config.json -Recurse -ErrorAction SilentlyContinue -Force | Select-Object DirectoryName | Export-Csv $tdePath -NoTypeInformation



$importTDEJson = Import-Csv $tdePath -Encoding UTF8 | % {

[String]$nr = $_.DirectoryName.Split('\')[6].split(' ')[4]

$full_path = $_.DirectoryName + "\TDE_Config.json"


[int]$nr2 = $nr -as [int] #Convert String to Int to convert 004 -> 4

$a = Get-Content $full_path -raw | ConvertFrom-Json




$a.value= "[`"E_" + $nr2 + "`"]"
$a | ConvertTo-Json | set-content $full_path -Force

}

仅执行 "[`"E_" + $nr2 + "`"]"会返回我需要的值。
例如,如果 $nr2 = 145在ps控制台中返回
["E_145"]

但是我的JSON看起来像这样:
{
"value": "[\"E_145\"]"
}

为什么Powershell在我的字符串中添加\?
如何防止Powershell在字符串中添加\?

最佳答案

您正在手动混合Json,并通过ConvertTo-Json混合Json。
Powershell正在对插入的反斜杠进行JavaScript转义。像这样设置$a.value:

$a.value= @("E_$nr2")

这将创建一个数组,而Json转换将为您完成其余工作。

编辑:
这是一个概念证明:

$a = [pscustomobject]@{
value = 'Something else'
}
$nr2 = 145
$a.value= @("E_$nr2")
$a | ConvertTo-Json

输出:
{
"value": [
"E_145"
]
}

关于json - 如何防止PowerShell将\添加到字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59574590/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com