在Groovy中,
考虑一个变量“ ssn”,其值由用户输入。
def ssn = <SSN captured via user input>
我正在创建字符串“有效载荷”形式的查询,其中用户输入的ssn应该替换字符串中的ssn。
String payload='{"<Some Database Query>","Variables"{"Id":"${ssn}"}}';
上述字符串有什么问题?字符串中的ssn不会替换为通过用户输入捕获的ssn。 “ $ {ssn}”不是正确的语法来捕获字符串中的变量值吗?
答案 0 :(得分:1)
在单引号字符串内,您不能进行字符串插值。您需要将外部字符串用双引号引起来。由于您想在值中嵌入双引号,因此最简单的方法是使用三重双引号("""..."""
)。
请参阅以下内容:
groovy:000> ssn = 'some captured input'
===> some captured input
groovy:000> payload = '{"<Some Database Query>","Variables"{"Id":"${ssn}"}}'
===> {"<Some Database Query>","Variables"{"Id":"${ssn}"}}
groovy:000>
groovy:000> payload = """{"<Some Database Query>","Variables"{"Id":"${ssn}"}}"""
===> {"<Some Database Query>","Variables"{"Id":"some captured input"}}