问题描述
如果参数是 mapInArray?如何获得财产?
例如:
Map<String,Object> param=new HashMap<String,Object>();
ArrayList<Object> array=new ArrayList<Object>();
Map<String,Object> obj=new HashMap<String,Object>();
obj.put("ccc","cccccc");
obj.put("ddd","dddddd");
array.add(obj);
param.put("a",array);
System.out.println(param);//{a=[{ccc=cccccc,ddd=dddddd}]}
System.out.println(AviatorEvaluator.execute("a[0].ccc",param));
线程“main”com.googlecode.aviator.exception.ExpressionSyntaxErrorException 中的异常:语法错误:意外标记“.”,可能忘记插入“;”在 4 处完成最后一个表达式,lineNumber: 1,token : [type='Char',lexeme='.',index=4],解析表达式时:a[0].^^^
在 com.googlecode.aviator.AviatorEvaluatorInstance.innerCompile(AviatorEvaluatorInstance.java:1494)
在 com.googlecode.aviator.AviatorEvaluatorInstance.compile(AviatorEvaluatorInstance.java:1455)
在 com.googlecode.aviator.AviatorEvaluatorInstance.compile(AviatorEvaluatorInstance.java:1413)
在 com.googlecode.aviator.AviatorEvaluatorInstance.compile(AviatorEvaluatorInstance.java:1400)
在 com.googlecode.aviator.AviatorEvaluatorInstance.execute(AviatorEvaluatorInstance.java:1601)
在 com.googlecode.aviator.AviatorEvaluator.execute(AviatorEvaluator.java:517)
在 com.googlecode.aviator.AviatorEvaluator.execute(AviatorEvaluator.java:529)
解决方法
AviatorEvaluator.execute(" b = a[0]; b.ccc == cccccc",param)