从 mule 4 的数组中删除所有多余的行

remove all the extra lines from the array in mule 4

我想从数组中删除多余的行或“\n\r”和“\n”,但我的解决方案不起作用。请为此提供正确的函数或数据编织。

输入(json数组格式):

 [{"m":"a\n\r",
   "a":"b\n"},
  {"m":"a\r\n",
   "a":"b\n"}]

预期输出(json 数组格式):

 [{"m":"a",
   "a":"b"},
  {"m":"a",
   "a":"b"}]

代码:

    %dw 2.0
    var someSpaceJson = write(payload, "application/json", {"indent":false}) 
    output application/json
    ---
    someSpaceJson replace "\n\r" with ""

您需要指定 \ 而不是 \ 来表示转义字符。

%dw 2.0
var someSpaceJson = write(payload, "application/json", {"indent":false}) 
output application/json
---
read((someSpaceJson replace "\r" with "" replace "\n" with ""),"application/json")

这应该会为您提供所需的输出。

如果您想保留值之间的新行并且只想删除尾随的 \r\n,您可以使用以下内容。这也将避免将 JSON 转换为字符串并返回,这通常应该避免。

%dw 2.0
output application/json
---
payload map ($ mapObject ($$): trim($))

但是,您需要确保所有值都是 stringnull。如果不是这种情况,您可以在 mapObject 函数本身中添加这些条件。