Dataweave-动态拆分mappedObject中的名称字段
我试图在我的有效负载中拆分一个名称字段,我首先按partnerRole筛选它,然后映射对象,在映射中我试图说“如果键等于'Name1',则将splitName函数作为firstName和lastName输出,否则只需普通的键和值对即可 这是我的有效载荷: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
{ "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')`