我有一個用例,我想讓用戶撰寫簡單的邏輯,并在幕后將此邏輯轉換為代碼中的條件。
例如,用戶可能會寫:
someFieldName > 10 AND otherFieldName is NULL
我希望生成以下代碼:
if (data["someFieldName"] > 10 && data["otherFieldName"] == null) {
// Do something
}
在做了一些研究之后,我發現其中一個選項是使用 eval(通過利用 JS 引擎),盡管它并不適合所有用例。我還看到可以使用像 ANTLR 這樣的工具,這似乎有點矯枉過正。
有沒有我們可以用于此類目的的簡單現成產品?或者我們自己創建一個簡單的決議器是處理它的最佳方式?
uj5u.com熱心網友回復:
MVEL2可以充分解決您的用例。
您無需使用 ANTLR 撰寫決議器和 AST 或轉換為 Java 代碼,只需使用適當的引數評估運算式即可。
事實上,任何 Java 運算式語言庫都可以。你也可以看看JUEL。
然而,看看這個運算式,我會說它更接近 MVEL2。
試試這兩個庫。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/484542.html
