dataweave 从数组元素中获取第一个字符

dataweave fetch first char from array elements

我正在尝试查看是否有 Types.Flag 以 'X' 开头,如果为真,我需要将 'subscribed' 设置为真。

输入:

{
    "Subscribers": [{
            "PhoneNumber": "9876543210",
            "Types": [{
                    "Name": "abcd",
                    "Flag": "WIR"
                },
                {
                    "FilterName": "efg",
                    "Flag": "XNJ"
                },
                {
                    "FilterName": "hijk",
                    "Flag": "YIR"
                }
            ]
        },
        {
            "PhoneNumber": "9823456789",
            "Types": [{
                "FilterName": "lmn",
                "Flag": "MST"
            }]
        }
    ]
}

预期输出

{
  "subscriberList": [
    {
      "phoneNumber": "2012020004",
      "subscribed": true
    },
    {
      "phoneNumber": "2234567890",
      "subscribed": false
    }
  ]
}

您能否建议如何实现这一目标?

试试这个:

%dw 2.0
output application/json

import some from dw::core::Arrays

var data = {
    "Subscribers": [{
            "PhoneNumber": "9876543210",
            "Types": [{
                    "Name": "abcd",
                    "Flag": "WIR"
                },
                {
                    "FilterName": "efg",
                    "Flag": "XNJ"
                },
                {
                    "FilterName": "hijk",
                    "Flag": "YIR"
                }
            ]
        },
        {
            "PhoneNumber": "9823456789",
            "Types": [{
                "FilterName": "lmn",
                "Flag": "MST"
            }]
        }
    ]
}
---
subscriberList: data.Subscribers map {
    phoneNumber: $.PhoneNumber,
    subscribed: $.Types.*Flag some (e) -> e startsWith "X"
}

这是我使用的函数的文档: