0

我正在尝试将一些代码从 mule 3 转换为 mule 4,所以我使用的是 dataweave 2。我不断从这段代码中收到错误

keySets: if(payload.autoQuote !=null) payload.autoQuote map (autoQuote) -> {
    (if(payload.autoQuote.personalAuto.vehicles != null) autoQuote.personalAuto.vehicles map ((vehicles,indexOfvehicle) ->{
        keySet: {
            key: if(vehicles.usage != null) vehicles.usage else 'DNF' ,
            keySequence: "TAUTO_USE_TYPE" ++ '_' ++ indexOfvehicle
    }
    } else {}))
} else {}

在第一行我得到不匹配的输入'->'期待'else'

在我得到的第二行 - 在“有效负载”处缺少 EOF

和 - 在前两个 '(' 的输入 '(' 没有可行的替代方案

4

3 回答 3

0

我相信 keySets 是一个列表而不是一个对象,你应该在你的 else 语句中使用 [] 而不是 {} 。我编辑了一些大括号,它对我来说编译得很好,但不确定它是否能按预期工作。

keySets: if(payload.autoQuote !=null) (payload.autoQuote map (autoQuote) -> {
    (if(payload.autoQuote.personalAuto.vehicles != null) 
        autoQuote.personalAuto.vehicles map ((vehicles,indexOfvehicle) -> {
            keySet: {
                key: if(vehicles.usage != null) vehicles.usage else 'DNF',
                keySequence: "TAUTO_USE_TYPE" ++ '_' ++ indexOfvehicle
        }
    }) else [])
}) else []

试一试,让我知道它是否有效。

于 2019-07-25T00:25:18.780 回答
0

原来我的括号错了。第一个 else 在地图后面的括号中。它应该看起来像这样。不知道它是否有效,但至少可以编译。

keySets: if(payload.autoQuote !=null) payload.autoQuote map (autoQuote) -> {
    (if(payload.autoQuote.personalAuto.vehicles != null) autoQuote.personalAuto.vehicles map ((vehicles,indexOfvehicle) ->{
    keySet: {
        key: if(vehicles.usage != null) vehicles.usage else 'DNF' ,
        keySequence: "TAUTO_USE_TYPE" ++ '_' ++ indexOfvehicle
}
}) else {})
} else {}
于 2019-07-26T18:05:19.990 回答
0

这不会给我错误,但我不确定它是否有意义:

%dw 2.0
output application/json
---
{
    keySets: if(payload.autoQuote !=null) (payload.autoQuote) map(autoQuote, i)  -> {
        ( if(payload.autoQuote.personalAuto.vehicles != null) (autoQuote.personalAuto.vehicles) map (vehicles,indexOfvehicle) ->{
            keySet: {
                key: if(vehicles.usage != null) vehicles.usage else 'DNF' ,
                keySequence: "TAUTO_USE_TYPE" ++ '_' ++ indexOfvehicle
            }
        } else {})
    } else {}
}

您应该给出输入和预期输出的示例。

另外我不确定你为什么不在地图内部使用地图的 autoQuoteparameter 而不是 payload.autoQuote ...

于 2019-07-25T01:11:56.183 回答