问题描述
你好,我有一个json文件作为有效负载,并努力进行转换以转换为小写的元素及其值。
{
"Name" : "John".
"e-mails" : ['Email1@mail.com','email2@Gmail.com']
}
如果其值中没有数组,则该选项可以像where
但是如何处理数组?
预期输出:
{
"name" : "john".
"e-mails" : ['email1@mail.com','email2@gmail.com']
}
有什么建议吗?
解决方法
您需要使用递归函数来覆盖其他类型。
%dw 1.0
%output application/json
%function lowerAll(x)
x match {
:object -> $ mapObject {
(lower $$): lowerAll($) // assumes all keys are strings
},:array -> $ map lowerAll($),:string -> lower $,default -> $
}
---
lowerAll(payload)
输入:
{
"Name" : "John","e-mails" : ["E1mail1@mail.com","email2@Gmail.com"]
}
输出:
{
"name": "john","e-mails": [
"e1mail1@mail.com","email2@gmail.com"
]
}