如果被字符包围,则嵌入的表达式不会被替换
Embedded expressions not replaced if surrounded by characters
在以下简化且非常基本的场景中,当附加、前置或包围字符时,嵌入的表达式不会被替换:
* def jobId = '0001'
* def out =
"""
{
"jobId": "#(jobId)",
"outputMetadata": {
"fileName_OK": "#(jobId)",
"fileName_Fail_1": "some_text_#(jobId)",
"fileName_Fail_2": "#(jobId)-and-some-more-text",
"fileName_Fail_3": "prepend #(jobId) and append"
}
}
"""
* print out
执行场景returns:
{
"jobId": "0001",
"outputMetadata": {
"fileName_OK": "0001",
"fileName_Fail_1": "some_text_#(jobId)",
"fileName_Fail_2": "#(jobId)-and-some-more-text",
"fileName_Fail_3": "prepend #(jobId) and append"
}
}
它是功能、限制还是错误?或者,我错过了什么吗?
这是设计好的!你可以这样做:
"fileName_Fail_2": "#(jobId + '-and-some-more-text')"
任何有效的JS表达式都可以塞入一个嵌入表达式中,所以这不是限制。这仅适用于 JSON 字符串值,或者当整个 RHS 是引号内的字符串并保持解析简单时。希望对您有所帮助!
在以下简化且非常基本的场景中,当附加、前置或包围字符时,嵌入的表达式不会被替换:
* def jobId = '0001'
* def out =
"""
{
"jobId": "#(jobId)",
"outputMetadata": {
"fileName_OK": "#(jobId)",
"fileName_Fail_1": "some_text_#(jobId)",
"fileName_Fail_2": "#(jobId)-and-some-more-text",
"fileName_Fail_3": "prepend #(jobId) and append"
}
}
"""
* print out
执行场景returns:
{
"jobId": "0001",
"outputMetadata": {
"fileName_OK": "0001",
"fileName_Fail_1": "some_text_#(jobId)",
"fileName_Fail_2": "#(jobId)-and-some-more-text",
"fileName_Fail_3": "prepend #(jobId) and append"
}
}
它是功能、限制还是错误?或者,我错过了什么吗?
这是设计好的!你可以这样做:
"fileName_Fail_2": "#(jobId + '-and-some-more-text')"
任何有效的JS表达式都可以塞入一个嵌入表达式中,所以这不是限制。这仅适用于 JSON 字符串值,或者当整个 RHS 是引号内的字符串并保持解析简单时。希望对您有所帮助!