Dataweave-动态拆分mappedObject中的名称字段

Dataweave-动态拆分mappedObject中的名称字段,object,if-statement,dynamic,conditional-statements,dataweave,Object,If Statement,Dynamic,Conditional Statements,Dataweave,我试图在我的有效负载中拆分一个名称字段,我首先按partnerRole筛选它,然后映射对象,在映射中我试图说“如果键等于'Name1',则将splitName函数作为firstName和lastName输出,否则只需普通的键和值对即可 这是我的有效载荷: { "Partners": [ { "PartnerRole": "ZF", "Name1": "BVG Smith

我试图在我的有效负载中拆分一个名称字段,我首先按partnerRole筛选它,然后映射对象,在映射中我试图说“如果键等于'Name1',则将splitName函数作为firstName和lastName输出,否则只需普通的键和值对即可

这是我的有效载荷:

 {   "Partners": [
    {
      "PartnerRole": "ZF",
      "Name1": "BVG Smith",
      "LovesGUID": "",
      "Phone": "7776668888",
      "Email": "",
      "ExternalAcct": "",
      "PaymentType": "",
      "PartnerDescription": "TCDriverInfo",
      "LoyaltyNo": "",
      "AccountGroup": "ZONC"
    }   
] 
}
我的映射对象似乎失控了,以下是我的dataweave:

%dw 2.0
output application/json
fun splitName(Name) = Name splitBy (" ")
var driver = ((payload.Partners filter ((partner) ->
                partner.PartnerRole == 'ZF'))[0]) 
                    mapObject (value,key,index) -> do {
                        if((key) != 'Name1')
                            {(key):(value)}
                        else
                            {"firstName":splitName(value)[0], "lastName":splitName(value)[-1]}
                    }  
---
{
    driver: driver
}
并输出此json:

{  
 "driver": {
    "PartnerRole": "ZF",
    "Name1": "AVG Smith",
    "LovesGUID": "",
    "Phone": "7776668888",
    "Email": "",
    "ExternalAcct": "",
    "PaymentType": "",
    "PartnerDescription": "ODriverInfo",
    "LoyaltyNo": "",
    "AccountGroup": "ZTNC"   } 
}
我希望能够输出为driver.firstName和driver.lastName


我哪里出错了?

mapObject中的
键实际上是
类型,不能直接与
字符串
类型进行相等比较。您可以将其强制转换为字符串,然后进行比较,即

if((key as String) != 'Name1')
您还可以使用
~=
运算符


虽然在这种情况下,您必须改变if-else语句才能使用它。

没错。它会给出所需的结果'if((键为字符串)!='Name1')`