【问题标题】:Need an optimized way to get the required output需要一种优化的方式来获得所需的输出
【发布时间】:2022-01-21 00:04:19
【问题描述】:

是否有一种优化的方法可以从下面的数据数组字段值中修剪开始和结束的空格,已经使用了三种方法,但需要更优化的方法。

注意:数据数组中可能有超过 20 个对象,每个对象有超过 50 个字段。下面的有效载荷只是一个示例;字段值可以包含任意大小的数字、字符串或日期。

{
"School": "XYZ High school",
"data": [
    {
        "student Name": "XYZ    ",
        "dateofAdmission": "2021-06-09     ",
        "percentage": "89   "
    },
    {
        "student Name": "ABC    ",
        "dateofAdmission": "2021-08-04     ",
        "percentage": "90   "
    },
    {
        "student Name": "PQR    ",
        "dateofAdmission": "2021-10-01     ",
        "percentage": "88   "
    }
]

}

需要的输出:

{
"School": "XYZ High school",
"data": [
    {
        "student Name": "XYZ",
        "dateofAdmission": "2021-06-09",
        "percentage": "89"
    },
    {
        "student Name": "ABC",
        "dateofAdmission": "2021-08-04",
        "percentage": "90"
    },
    {
        "student Name": "PQR",
        "dateofAdmission": "2021-10-01",
        "percentage": "88"
    }
]

}

我用过的三种方法:

第一种方法:

%dw 2.0
output application/json

//variable to remove beginning and end blank spaces from values in key:value pairs for data
var payload1 = payload.data map ((value , key ) ->
value mapObject (    ($$ )) : trim($)) 

---
//constructed the payload
payload - "data" ++ data: payload1 map ((item, index) -> {
    (item)
})

第二种方法:

%dw 2.0
output application/json
---
payload - "data" ++ data: payload.data map ((value , key ) ->
value mapObject (    ($$ )) : trim($))  map ((item, index) -> {
    (item)
})

第三种方法:

%dw 2.0
output application/json
---
{
        "Name":payload.School,
        "data": payload.data map ( $ mapObject (($$):trim($) ) )
}

【问题讨论】:

  • 更优化的方式是什么意思?您的解决方案的真正问题是什么?
  • 客户端说内存管理不正确,由于变量等原因
  • 很抱歉,这不是很清楚。应该测试不同版本是否存在任何实际问题。否则只是审美意见。

标签: mule dataweave mulesoft mule4


【解决方案1】:

使用更新运算符的另一种解决方案:

%dw 2.0
output application/json
---
payload update {
        case data at .data ->
            data map ($ mapObject ((value, key, index) -> (key):trim(value) ))
}

请注意,您的前两个解决方案完全相同,并且最后都有一个不需要的 map() 似乎没有任何用途。第三种解决方案非常相似,但对学校名称使用了不正确的键名(Name 而不是示例中的School)。除了那些小问题之外,每个解决方案都没有什么特别的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多