You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何验证字符串格式数组是否仅含数值并完成转换?

字符串格式数组的数值有效性验证方案

原代码功能

以下代码可验证原生数组是否仅包含非空数值元素,同时判断数组元素数量:

%dw 2.0
output json
fun isValidElements(arr: Array) =
    arr map ((item) -> item is Number and item != null) reduce ((acc, item) -> acc and item)
fun isValidArray(arr: Array) =
    (sizeOf(arr) > 0) and (isEmpty(arr) or isValidElements(arr))
fun flagInvalidArray(arr: Array) = isValidArray(arr)
var MyArray = [123,456,789]
---
{
    "arrayValid": flagInvalidArray(MyArray),
    "arraySize": if (sizeOf(MyArray) > 1) "Multiple" else "Single"
}

需求说明

需要针对字符串格式的数组输入(如 "[123,456,789]")完成验证:

  • 有效数组:仅包含非空数值且非空,例如 "[123,456,789]"、"[12345]"
  • 无效场景:包含非数值(如 "[ABC,123,456]")、null(如 "[123,null,456]")、垃圾值(如 "[,,,,,%$$$]")或空数组,此类情况需标记为无效,垃圾值需转为空数组

直接使用read函数转换无效字符串会抛出异常,因此需要做异常捕获处理。

解决方案代码

%dw 2.0
output json

// 验证数组元素是否全为非空数值
fun isValidElements(arr: Array) =
    arr map ((item) -> item is Number and item != null) reduce ((acc, item) -> acc and item)

// 验证数组非空且元素有效
fun isValidArray(arr: Array) =
    sizeOf(arr) > 0 and isValidElements(arr)

// 尝试将字符串解析为数组,失败则返回空数组
fun parseStringToArray(str: String): Array =
    try(() -> read(str, "application/json")) 
    otherwise []

// 处理字符串输入的完整验证逻辑
fun validateStringArray(str: String) = do {
    var parsedArray = parseStringToArray(str)
    var isArrayValid = isValidArray(parsedArray)
    ---
    {
        "arrayValid": isArrayValid,
        "arraySize": if (isArrayValid) (if (sizeOf(parsedArray) > 1) "Multiple" else "Single") else "Invalid",
        "parsedArray": parsedArray
    }
}

// 测试示例
var testCases = [
    "[123,456,789]",
    "[12345]",
    "[ABC,123,456]",
    "[123,null,456]",
    "[,,,,,%$$$]",
    "[]"
]
---
testCases map ((testCase) -> {
    input: testCase,
    result: validateStringArray(testCase)
})

关键逻辑说明

  1. 异常捕获解析:parseStringToArray函数用try...otherwise捕获read解析失败的情况,将无效字符串转为空数组,避免抛出错误
  2. 复用验证逻辑:保留原有的isValidElements和isValidArray函数,确保元素验证逻辑一致
  3. 结果返回:返回验证状态、元素数量(仅当有效时)、解析后的数组,清晰展示处理结果

内容的提问来源于stack exchange,提问作者Triumph Spitfire

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 20:20:23