【发布时间】:2020-12-11 08:06:34
【问题描述】:
我试图在我的有效负载中拆分一个名称字段,我首先按 partnerRole 过滤它,然后映射对象,在映射中我想说“如果键等于'Name1',则将 splitName 函数输出为 firstName和姓氏,否则只需要普通的键值对即可。
这是我的有效载荷:
{ "Partners": [
{
"PartnerRole": "ZF",
"Name1": "BVG Smith",
"LovesGUID": "",
"Phone": "7776668888",
"Email": "",
"ExternalAcct": "",
"PaymentType": "",
"PartnerDescription": "TCDriverInfo",
"LoyaltyNo": "",
"AccountGroup": "ZONC"
}
]
}
我的映射对象似乎出了问题,这是我的数据编织:
%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。
我哪里做错了?
【问题讨论】:
标签: object if-statement dynamic conditional-statements dataweave