如何从 json 数组中的对象的每一行中删除尾随逗号? 样本输入:
[
{
"dc": "cn=Cggzci,dc=maxcrc,dc=com",
"objectClass": "top",
"objectClass": "person",
"cn": "Cggzci",
"sn": "Mqemdv"
},
{
"dc": "cn=Vntlww,dc=maxcrc,dc=com",
"objectClass": "top",
"objectClass": "person",
"cn": "Vntlww",
"sn": "Fehiqr"
}
]
数据编织:
%dw 2.0
output text/plain
var test = (write(payload,'application/json'))
---
test replace /\[\n|\n\]|\{|\},\n|\}|"/ with ""
收到的输出:
dc: cn=Cggzci,dc=maxcrc,dc=com,
objectClass: top,
objectClass: person,
cn: Cggzci,
sn: Mqemdv
dc: cn=Vntlww,dc=maxcrc,dc=com,
objectClass: top,
objectClass: person,
cn: Vntlww,
sn: Fehiqr
要求输出在每一行中都应该没有尾随逗号,并删除每行开头的空格。
我建议避免像这样的事情使用正则表达式。更好地转换数据的结构。
%dw 2.0
output text/plain
fun printRecord(x)=x pluck ($$ as String ++ ": " ++ $) joinBy "\n"
---
payload map printRecord($) joinBy "\n\n"
输出:
dc: cn=Cggzci,dc=maxcrc,dc=com
objectClass: top
objectClass: person
cn: Cggzci
sn: Mqemdv
dc: cn=Vntlww,dc=maxcrc,dc=com
objectClass: top
objectClass: person
cn: Vntlww
sn: Fehiqr
实现问题的最好方法不是替换,而是处理数据结构并生成输出
%dw 2.0
output text/plain
fun toFlat(value: Array<Object>): String =
value map ((item, index) -> toFlat(item))
joinBy "\n\n"
fun toFlat(value: Object) : String =
value pluck ((value, key, index) -> "$(key): $(value as String)")
joinBy "\n"
---
toFlat(payload)
这将输出你想要的,不依赖于你的输入值,而是依赖于你的输入形状一个对象数组