Syntax 如何将参数用作新对象中的键?
我正在修改一些招摇过市的东西来添加aws api网关集成,目前我一直在解决这个问题 使用此代码,我无法生成安全对象 我得到了一个错误: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/
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字符串