您的位置:首页 > Web前端 > JavaScript

使用ScriptEngine 通过实体类和计算公式 计算结果

2016-09-26 16:21 288 查看
使用ScriptEngine 通过实体类和计算公式 计算结果 

其中有用到 ScriptEngine  JSONObject  hashMap iterator

public class Contents{
private Integer score1;
private Integer score2;
private Integer score3;

public Integer getScore1() {
return score1;
}

public void setScore1(Integer score1) {
this.score1 = score1;
}

public Integer getScore2() {
return score2;
}

public void setScore2(Integer score2) {
this.score2 = score2;
}

public Integer getScore3() {
return score3;
}

public void setScore3(Integer score3) {
this.score3 = score3;
}

}

@Test
public void test(){
//规则
String rule="score1+score2";
//计算参数
String[] params={"score1","score2"};
//实体类
Contents contents=new Contents();
contents.setScore1(1);
contents.setScore2(2);
contents.setScore3(3);
//对象转json
JSONObject jsonObj = JSONObject.fromObject(contents);
//
//ScriptEngineManager manager = new ScriptEngineManager();
//通过文件扩展名获取脚本引擎
ScriptEngine engine = new ScriptEngineManager().getEngineByName("js");
//将参数和实体类中的值 封装到hash中
Map<String,Object> paramValues = new HashMap<String,Object>();
for(String param:params){
paramValues.put(param,JsonUtils.getParamValue(jsonObj,param));
}
//将hash转成集合 便于循环遍历
Iterator<String> keys=paramValues.keySet().iterator();
//将key和value 封装到脚本引擎中
while(keys.hasNext()){
String key = keys.next();
if(engine.get(key)==null){
engine.put(key, paramValues.get(key));
}
}
//脚本引擎通过rule的计算公式 计算结果
try {
Object calcValue = engine.eval(rule);
} catch (ScriptException e) {
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ScriptEngine json it