2017-09-06 207 views
1

我想存储的表达式语言YAML文件YAML店表达式语言

"name": "${foo.data:toLower().equals('hello')}" 

我试图把'\''$'{}前面,但它不工作。 我只想将"name"键设置为上面的表达式语言。

失败的尝试导致name关键如果你在双引号字符串中$的前面放一个反斜杠(\),以获得与"toLower().equals('hello')"

+0

我发现只是逃避大括号似乎可以防止表达式被解析,即:'name:$ \ {test:foo}'(不含您使用过的双引号)可以解决字符串“$ \ {test:foo}”。但是反斜杠仍然存在,所以当你稍后使用它时,你不得不从字符串中移除它,这对我来说并没有什么帮助?如果你知道你的'name'属性将包含SpEL,你可以使用它:'name:foo.data:toLower()。equals('hello')',并将它包装在'$ {.. 。'在代码中? – DaveyDaveDave

+0

@DaveyDaveDave感谢您的帮助。我稍后在代码中放入$ {...}。 –

回答

0

的属性,你应该得到一个错误,因为\$是一个未知的转义序列在YAML。

如果你没有得到这个错误,你的分析器坏了,但您可能能够通过使用双反斜线要解决这个问题:

"name": "\\${foo.data:toLower().equals('hello')}" 

(您可能还需要他们为{}