我无法使用padRight

问题描述 投票:0回答:1

我试图在必要时向映射添加零,但它不起作用。

这是我正在使用的有效载荷:

[
    {
        
        "groupName": "POSCH",
        
        "groupMembers": [
            {
                "dealerNumber": "262",
                
                "mainDealer": true
            },
            {
                "dealerNumber": "243",
                
                "mainDealer": false
            }
        ]
    },
    {
        
        "groupName": "PRUCKNER",
        
        "groupMembers": [
            {
                "dealerNumber": "213",
                
                "mainDealer": true
            },
            {
                "dealerNumber": "262",
                
                "mainDealer": false
            }
        ]
    }]

我目前正在写这个,以便仅在 maindealer 中过滤包含 true 的 dealerNUber。我相信这是一个很好的状态,但我不能添加零

%dw 2.0
output application/json
---
payload map {
    groupName: $.groupName,
    dealers: $.groupMembers filter $.mainDealer == true map {
        dealerNumber: $.dealerNumber padRight(5, "0"),
        locationName: $.locationName
    }
}

为了让262变成00262.

但它给了我这个错误:

Invalid input ',', expected ')' for the enclosed expression. (line 7, column 48):


7|         dealerNumber: $.dealerNumber padRight(5, "0"),
                                                  ^
Location:
main (line: 7, column:48)
mule dataweave mulesoft
1个回答
0
投票

有一个 DataWeave 的几个问题。

  1. 根据您的要求,您需要
    leftPad
    而不是 rightPad,因为您正试图在字符串的左侧添加零。您需要按原样在
    dw::core::Strings
    模块中导入它。
  2. 你混合了中缀和前缀符号。您一次只能使用其中一个,只有当您想使用 2 个参数调用函数时才可以使用中缀。 参考这个文档

DataWeave 支持两种前缀表示法

(function (param1, param2))
和中缀符号
(param1 function param2)
用于函数调用。笔记 你只能对只接受的函数使用中缀符号 两个参数.

在建议的更改之后,您的 DataWeave 应该如下所示:

%dw 2.0
import leftPad from dw::core::Strings
output application/json
---
payload map {
    groupName: $.groupName,
    dealers: $.groupMembers filter $.mainDealer == true map {
        dealerNumber: leftPad($.dealerNumber,5, "0"),
        locationName: $.locationName
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.