You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell中如何将变量值嵌入JSON字符串的双引号内

问题原因

PowerShell中单引号包裹的字符串为字面量字符串,不会对内部的变量、表达式做解析展开,这就是你代码里$name没有被替换成实际值的核心原因。


解决方案

方案1:外层使用双引号定义可扩展字符串

PowerShell双引号包裹的字符串支持变量自动展开,你只需要把外层的单引号换成双引号,内部需要保留的双引号用反引号`转义即可:

$name="abc"
$json = "{\`"name\`":\`"$name\`",\`"projectId\`":\`"10034\`"}"
$json

执行后输出即为你期望的结果:{\"name\":\"abc\",\"projectId\":\"10034\"}

方案2:使用字符串格式化操作符-f

如果你想保留外层单引号的写法,可以用PowerShell的格式化操作符做占位符替换,写法更清晰,也能避免多层引号转义混乱:

$name="abc"
$json = '{\"name\":\"{0}\",\"projectId\":\"10034\"}' -f $name
$json

方案3(推荐):使用ConvertTo-Json自动构造JSON

如果你的最终目标是生成合法JSON字符串,更稳妥的方式是先构造PowerShell对象,再用内置命令转换,自动处理转义、格式问题,不会出现手写JSON的语法错误:

$name="abc"
$obj = [PSCustomObject]@{
    name = $name
    projectId = "10034"
}
# 加-Compress参数输出压缩后的单行JSON,不加的话会输出格式化多行结构
$json = $obj | ConvertTo-Json -Compress
# 如果你需要额外给双引号加反斜杠转义(比如要把JSON放到另一个字符串里),可以再加一步替换
$json = $json.Replace('"', '\"')
$json

内容的提问来源于stack exchange,提问作者Aatif Akhter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 01:12:01