Dataweave:在对象中添加总和

Séb*_*las 2 dataweave

我想在对象中添加一个 sum 字段。这是我所做的微不足道的代码:

%dw 2.0

output application/json
fun compute(a) = a

var demo=
{
    a: compute(1),
    b: compute(2),
    c: compute(4),
    sum: compute(1)+compute(2)+compute(4)
}

---

demo
Run Code Online (Sandbox Code Playgroud)

目标是避免在字段中重做多个函数调用sum。结果如下:

{
  "a": 1,
  "b": 2,
  "c": 4,
  "sum": 7
}
Run Code Online (Sandbox Code Playgroud)

Séb*_*las 5

这里有一些工作,但我想知道是否有可能有更好的东西:

%dw 2.0
import * from dw::core::Objects
output application/json

fun compute(a) = a

var demo=
    using  (
        tmp= {
            a: compute(1),
            b: compute(2),
            c: compute(4),
        }
    ) tmp ++ { sum:sum(valueSet(tmp)) }


---

demo
Run Code Online (Sandbox Code Playgroud)