我對春天的表達語言很新。我有一個包含值作爲字符串的地圖。將字符串轉換爲雙重的春天表達語言
{
"id": "1",
"object": {
"object1": {
"fields": {
"value1": {
"value":"3"
},
"value2": {
"value":"2"
}
}
}
}
}
彈簧表達,我有看起來像這樣,
((object['object1'].fields['value1'].value * object['object1'].fields['value2'].value) * 0.5)
我的計算方法如下所示,其中SampleObject類有地圖對象
public Double calculation(String expression, SampleObject sampleObject){
ExpressionParser parser = new SpelExpressionParser();
Expression exp = parser.parseExpression(expression);
Double evaluatedValue = (Double)exp.getValue(sampleObject);
return evaluatedValue;
}
由於值是字符串,我得到一個錯誤,說不能將字符串轉換爲Double。這可如果我改變這樣
((new Double(object['object1'].fields['value1'].value) * new Double(object['object1'].fields['value2'].value)) * 0.5)
表達被淘汰,但我正在尋找一個解決方案,我沒有改變表達式或對象。有沒有解決方案。
在此先感謝
正如我提到的問題,我做不想改變地圖。此外,您的第二個建議不起作用,因爲問題出現在表達式中,而不是評估值中。所以我仍然得到這個錯誤消息「運算符'MULTIPLY'不支持'java.lang.String'和'java.lang.String'類型的對象之間」也是FYI,第二個解決方案也可以像這樣實現,Double evaluateValue = exp.getValue(sampleObject,Double.class); – Visahan