【问题标题】:Unable to transform json array in dataweave无法在 dataweave 中转换 json 数组
【发布时间】:2020-12-26 10:25:12
【问题描述】:

我是 mule 新手,无法将此嵌套数组转换为我需要的格式。我搜索了各种链接,但找不到与我的要求相关的太多帮助。 我正在附上我到目前为止尝试过的 sn-p,但我无法弄清楚如何进一步进行。

代码

%dw 2.0
output application/json
var myvar={
    "name" : ["Shawn","James","Paul"],
    "sd" : ["2020-12-23","2020-12-24","2020-12-24"],
    "ed" : ["2020-12-25","2020-12-28","2020-12-27"]
}
---
myvar.name zip myvar.sd zip myvar.ed

所需输出

[
    {       
        'name': "shawn",
        'sd': "2020-12-23",
        'ed': "2020-12-25"      
    },
    {       
        'name': "james",
        'sd': "2020-12-24",
        'ed': "2020-12-28"      
    },
    {       
        'name': "Paul",
        'sd': "2020-12-24",
        'ed': "2020-12-27"      
    }   
]

实际输出

[
  [
    [
      "Shawn",
      "2020-12-23"
    ],
    "2020-12-25"
  ],
  [
    [
      "James",
      "2020-12-24"
    ],
    "2020-12-28"
  ],
  [
    [
      "Paul",
      "2020-12-24"
    ],
    "2020-12-27"
  ]
]

任何形式的指导或提示或任何相关链接都会对我很有帮助。

【问题讨论】:

标签: dataweave mule4


【解决方案1】:

试试这个.. 有很多方法可以解决这个问题!!

%dw 2.0
output application/json
import * from dw::core::Arrays
var myvar={
    "a": ["Shawn", "James", "Paul"],
    "b": ["2020-12-23", "2020-12-24", "2020-12-24"],
    "c": ["2020-12-25", "2020-12-28", "2020-12-27"]
}
---
1 to 3 map 
{
    name: drop(myvar.a,($-1))[0],
    sd: drop(myvar.b,($-1))[0],
    ed: drop(myvar.c,($-1))[0]
}

【讨论】:

  • 谢谢@SalimKhan。效果很好...你能简单解释一下这是如何工作的吗?我对此有点陌生
  • 当然.. 我正在尝试使用 1 到 3 创建一个 for 循环,或者我可以对 sizeOf(myvar.a) 做 1 (如果三个数组的大小总是相同)。之后是关于构建所需的对象。 Drop 是核心数组函数 (docs.mulesoft.com/mule-runtime/4.3/dw-arrays-functions-drop),它删除函数定义中指定的前 n 个元素 - drop (array,n) 并返回一个包含其余元素的数组。所以在每次迭代中,我都会从剩余数组中挑选第一个元素。
  • 在第一次迭代中(当 $ =1 时,因为它从 1 开始)它不会丢弃任何内容,因此第 [0] 个元素实际上会给出第一个所需的 "Shawn" ,"2020 -12-23","2020-12-25" 。接下来,当 $ = 2 时,它会丢弃 Shawn 并保留 James 和 Paul 以及第 [0] 个元素,这将给我 James 以及 sd 和 ed 的其余字段。同样,当 $ 为 3 时,它会删除前两个元素,剩下的是 Paul 的详细信息,我可以使用第 [0] 个元素来选择,因为 drop 函数总是返回一个数组。 HTH。
  • 谢谢@SalimKhan...这非常有帮助..但是如果有一天数组的大小发生变化,在这种情况下我该怎么办?就像现在如果每个数组有 5 个元素在这种情况下我该怎么办?
  • 1 到 sizeOf(myvar.a)
猜你喜欢
  • 1970-01-01
  • 2022-01-09
  • 1970-01-01
  • 2017-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多