【发布时间】:2018-05-10 01:11:30
【问题描述】:
我有一个问题,用任何其他语言都需要十秒钟,但在这里我无法使用 Dataweave 解决它。
我的 JSON 看起来像这样:
{
"100": [{
"courseID": "100",
"course": "physics",
"instructor": "John S",
"section": "A",
"date": "01-01-1900"
}],
"200": [{
"courseID": "200",
"course": "math",
"instructor": "Jim R",
"section": "A",
"date": "01-03-1900"
},
{
"courseID": "200",
"course": "math",
"instructor": "Jim R",
"section": "B",
"date": "01-07-1900"
},
{
"courseID": "200",
"course": "math",
"instructor": "Jim R",
"section": "C",
"date": "01-08-1900"
}
]}
}
我确定数组中的对象包含重复信息,但部分和日期除外。所以我需要把它浓缩转化成这样:
{
"courses": [{
"courseID": "100",
"course": "physics",
"instructor": "John S",
"sections": [{
"section": "A",
"date": "01-01-1900"
}]
},
{
"courseID": "200",
"course": "math",
"instructor": "Jim R",
"sections": [{
"section": "A",
"date": "01-03-1900"
},
{
"section": "B",
"date": "01-07-1900"
},
{
"section": "C",
"date": "01-08-1900"
}]
]}
我不能让这发生。我已经尝试了所有可以看到的方法来迭代文档,使用 map()、mapObject() 和 pluck()。我认为它们需要嵌套,我只想从它迭代的第一门课程中提取 ID、课程和讲师,然后继续使用部分数据构建对象。嵌套似乎会引起问题,因为对象和数组混合在一起,如果嵌套函数返回错误的类型,则 map() 和 mapObject() 会抱怨。这是我一直在尝试但没有成功的事情:
%dw 2.0
output application/json
---
"courses": payload.pluck(courseValue, courseKey, courseIndex) ->
courseValue map (classValue, classKey, classIndex) ->
{ courseID: classValue.courseID,
instructor: classValue.instructor
etc...
}
我希望一切都清楚。我被它弄乱了这么久已经筋疲力尽了。有没有可能我想做的事情对 DW 来说太复杂了,我应该使用另一种方法?
【问题讨论】: