Mule ESB,在JSON数组中添加数字时出现问题

时间:2014-07-28 21:47:14

标签: json expression mule esb

我在Database COnnection节点中使用以下动态查询(即使我可以使用准备好的stmt):

SELECT BALANCE FROM xxx.TAB

我在SetPayload命令中有以下表达式,它在数据库连接节点之后立即运行:

#[message.payload]

我从curl得到以下回复:

[{"BALANCE":111.11},{"BALANCE":222.12},{"BALANCE":444.30}]

所以我修改了流程,在数据库连接节点和SetPayload节点之间放置了一个表达式节点,其中包含以下表达式:

sum = 0;
foreach (row : message.payload) {
  sum += row['BALANCE'];
}
message.payload = sum;

我再次运行卷曲,但这次我得到以下内容:

777.5299999999999994315658113919199

实际上,答案应该是777.53

这些数据怎么了?

有没有办法解决这个问题?

由于

1 个答案:

答案 0 :(得分:2)

这是因为值是Float或Double。看一下类似的内容:http://docs.oracle.com/javase/7/docs/api/java/text/DecimalFormat.html

有点凌乱,但有点像:

sum = 0;
foreach (row : message.payload) {
  sum += row['BALANCE'];
}
message.payload = new java.text.DecimalFormat("#.##").format(sum);