如何用DataWeave移除JSON数组内对象的行尾逗号及行首空格
用DataWeave清理JSON数组元素的行首空格与行尾逗号
核心处理逻辑
针对数组内每个带格式的字符串元素,通过两次正则替换完成需求:
- 移除每行开头的任意数量空格
- 移除行尾的逗号(含逗号前可能存在的空格)
代码实现
假设输入为包含格式化JSON字符串的数组:
[ " {\n \"name\": \"Alice\",\n \"age\": 30,\n }", " {\n \"name\": \"Bob\",\n \"age\": 25,\n }" ]
对应的DataWeave代码:
%dw 2.0 output application/json --- payload map (item) -> item // 清除每行开头的空格 replace /^\s+/ with "" multiLine=true // 清除行尾的逗号(含前置空格) replace /\s+,$/ with "" multiLine=true
代码说明
map遍历数组中的每个元素,逐个处理- 第一个
replace:multiLine=true开启多行模式,^匹配每行开头,\s+匹配一个或多个空白字符,替换为空实现行首空格清理 - 第二个
replace:$在多行模式下匹配每行结尾,\s+,匹配行末可选空格加逗号,替换为空移除行尾冗余逗号
处理后输出
[ "{\n\"name\": \"Alice\"\n\"age\": 30\n}", "{\n\"name\": \"Bob\"\n\"age\": 25\n}" ]
扩展:处理结构化JSON对象
如果你的输入是结构化JSON对象(而非字符串),可以先将对象转为字符串再处理:
%dw 2.0 output application/json --- payload map (item) -> write(item, "application/json", {indent: false}) replace /^\s+/ with "" multiLine=true replace /\s+,$/ with "" multiLine=true
这里write函数将JSON对象转为无缩进字符串,再执行正则替换操作。
内容的提问来源于stack exchange,提问作者ariana
相关产品推荐
相关产品推荐

