2017-09-06 149 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')}" 

(您可能還需要他們爲{}