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

如何用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 08:22:45