Syntax 如何将参数用作新对象中的键?

Syntax 如何将参数用作新对象中的键?,syntax,key,expression,jq,Syntax,Key,Expression,Jq,我正在修改一些招摇过市的东西来添加aws api网关集成,目前我一直在解决这个问题 使用此代码,我无法生成安全对象 我得到了一个错误: jq:error:syntax error,意外的“:”,应为“}”(unixshell引用问题?) .value.security |=[{$authorizer_name:map(.)}] 今天我快发疯了 有人能解释一下吗 这是一个小程序 INPUT='{ "swagger": "2.0", "paths": { "integrations/

我正在修改一些招摇过市的东西来添加aws api网关集成,目前我一直在解决这个问题

使用此代码,我无法生成安全对象

我得到了一个错误:

jq:error:syntax error,意外的“:”,应为“}”(unixshell引用问题?)
.value.security |=[{$authorizer_name:map(.)}]

今天我快发疯了

有人能解释一下吗

这是一个小程序

INPUT='{
  "swagger": "2.0",
  "paths": {
    "integrations/systems/{system_id}/configurations": {
      "get": {
        "security": [
          "https://api.com/internal-api"
        ]
      }
    }
  }
}'

AUTHORIZER_NAME="cognito_user_pool"

jq --arg authorizer_name "${AUTHORIZER_NAME}" \
'.info.title |= "API" 
| .info.description |= "REST API" 
| .paths |= with_entries(
    .value |= with_entries(
      .value.security |= [ { $authorizer_name : "stuff" }]
    )
  )' <<< "${INPUT}"
INPUT=”{
“招摇过市”:“2.0”,
“路径”:{
“集成/系统/{system_id}/配置”:{
“获取”:{
“安全”:[
"https://api.com/internal-api"
]
}
}
}
}'
授权人\u NAME=“cognito\u用户\u池”
jq--arg authorizer\u name“${authorizer\u name}”\
“.info.title |=”API“
|.info.description |=“REST API”
|.path |=带有_项(
.value |=带有_项(
.value.security |=[{$authorizer_name:“stuff”}]
)

)“正如@JeffMercado所建议的,如果将
$authorizer\u name
括在括号中,问题就会消失:

{ ($authorizer_name) : "stuff" }
要点是,当使用这里的对象构造语法时,每个指定键名的表达式必须用括号括起来,除非它是JSON字符串