【问题标题】:Mule ESB, issue when adding up numbers within a JSON arrayMule ESB,在将 JSON 数组中的数字相加时出现问题
【发布时间】:2014-07-29 20:09:52
【问题描述】:

我在我的数据库连接节点中使用以下动态查询(即使我可以使用准备好的 stmt):

SELECT BALANCE FROM xxx.TAB

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

#[message.payload]

我从 curl 得到以下响应:

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

所以我修改了流程,在 Database 连接节点和 SetPayload 节点之间放置了一个表达式节点,表达式如下:

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

我再次运行 curl,但这次我得到以下信息:

777.5299999999999994315658113919199

其实答案应该是777.53

这些数据怎么了?

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

谢谢

【问题讨论】:

    标签: json expression mule esb


    【解决方案1】:

    这是因为该值是 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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-02
      • 1970-01-01
      • 2012-11-22
      • 2016-03-19
      • 2013-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多