是否存在一种非常简单的表达式语言,它具有以下语言之一的解析器:
我想对对象执行的操作类似于角度表达式。 http://teropa.info/blog/2014/03/23/angularjs-expressions-cheatsheet.html
但是我并不需要所有这些,因为我想要语言无关的功能。暴露于表达式的对象应该是JSON。意思是我不需要允许函数调用。也不需要过滤功能。
我想用它来实现语言实现之间共享的简单验证表达式。
鉴于以下人员
{
age: 17,
male: false,
country: 'US'
}
我可能想要定义像这样的验证规则
{
age: "(male && age >= 16) || (!male && age >= 18)", // => conditionally valid
country: "country == 'US'" // => valid
}
对于像这样的简单表达式,我应该有什么替代方法可以返回true或false?运营商不需要像上面的例子那样。 and
可以,而不是&&
或lt
可以,而不是<
等。
我已经看到了一些像http://docs.oracle.com/javaee/7/tutorial/doc/jsf-el007.htm#BNAIM这样的替代方案,但我所看到的问题是它们是用于特定的上下文并且有几个隐式变量。并且他们有像lambda表达式等的东西,这使得编写可能缺少一种更复杂的语言实现。
答案 0 :(得分:0)
Spring Expression Language支持Java,Javascript和.NET:
我使用了.NET和Java版本,尽管它们之间存在一些不一致之处,但是它们通常都很好。
您还可以使用JavaScript本身,许多现代语言都可以解析和评估JavaScript。