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

如何在PowerShell的JSON请求体中传递变量

解决PowerShell中JSON请求体插入变量的问题

嘿,我一眼就瞅出问题所在啦!你现在用单引号包裹整个JSON字符串,PowerShell在单引号里是不会解析任何变量的,而且手动用"转义双引号不仅麻烦,还容易出错。给你两个实用的解决办法:

方法1:用双引号包裹并转义内部双引号

把外层的单引号换成双引号,同时用PowerShell的转义符(反引号)转义JSON里的双引号,这样变量就能被正常解析了。如果$userID`是字符串类型,记得给变量也加上转义的双引号,保证JSON格式合法:

$userID = "12345" # 示例用户ID
$body = "{ `"data`": [ { `"user_id`":`"$userID`", `"type`":`"manual`", `"date`":`"2021-01-30`", `"duration`":`"150`", `"jobcode_id`":`"15281216`", `"notes`":`"This is a test of a manual time entry`", `"customfields`": { `"54138`" : `"IT Services`", `"54136`" : `"Yes`" } } ] }"

方法2:用PSCustomObject生成JSON(更推荐)

这是PowerShell处理JSON最规范的方式——先构建一个自定义对象来对应你的数据结构,再通过ConvertTo-Json命令转成JSON字符串。完全不用手动写JSON和处理转义,变量代入也自然流畅:

$userID = "12345" # 示例用户ID

# 构建数据对象
$timeEntryData = [PSCustomObject]@{
    data = @(
        [PSCustomObject]@{
            user_id = $userID
            type = "manual"
            date = "2021-01-30"
            duration = "150"
            jobcode_id = "15281216"
            notes = "This is a test of a manual time entry"
            customfields = [PSCustomObject]@{
                "54138" = "IT Services"
                "54136" = "Yes"
            }
        }
    )
}

# 转成JSON字符串,-Depth要足够覆盖嵌套层级
$body = $timeEntryData | ConvertTo-Json -Depth 3

这个方法的好处是,你不用操心JSON的语法问题,PowerShell会帮你自动处理所有转义和格式,而且代码可读性高,后续修改字段也方便。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 06:57:29