簡體   English   中英

使用 Mule 4 dataweave 刪除 JSON 消息中所有可能的空格

[英]Remove all posible spaces in JSON message with Mule 4 dataweave

我有一條 JSON 消息,我需要刪除所有格式空間以保持值不變。 在對完整負載運行 hash function 之前,這是必需的,因此它需要精確。

我從 Dataweave 編寫器配置中的indent=false開始,但我在每個冒號后都有一個空格,如下所示:

{"text": "number\": 1 | array\": [ | number\": 1","number": 1,"array": [1,"as",[],{}]}

在進入 RegEx 世界之前,是否有任何建議的優雅解決方案來刪除留下的空格? 如果沒有,任何 RegEx 解決方案?

在@SalimKhan(謝謝)建議的帖子之后,我得到了這個解決方案。 基本上我只是在 DataWeave 上寫了一個完整的 JSON 自定義編寫器。

fun jsonWrite(item) = item match {
    case is Array -> "[" ++ joinBy($ map jsonWrite($), ",") ++ "]"
    case is Object -> "{" ++ joinBy($ pluck ("\"" ++ $$ ++ "\":" ++ 
        ($ match {
            case is String -> "\"" ++ ($ replace "\"" with "\\\"") ++ "\""
            case is Object -> jsonWrite($)
            case is Array -> "[" ++ joinBy($ map jsonWrite($), ",") ++ "]"
            else -> $
        })),",") ++ "}"
    case is String -> "\"" ++ ($ replace "\"" with "\\\"") ++ "\""
    else -> $
}

我嘗試使用以下 dw 腳本從 json 中刪除所有空間。 下面的代碼將在 stream 中給出 json,沒有縮進,但每個冒號后會有空格。

%dw 2.0
output application/json indent=false
---
{
    name: "somename",
    city: "sg",
    profession: "tenchdigger"
}

上面腳本的 output 被轉換為字符串並使用下面的腳本刪除所有空格

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

最終結果是一個沒有空格的 json 字符串

"{"name":"somename","city":"sg","profession":"tenchdigger"}"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM