【发布时间】:2021-06-13 22:28:50
【问题描述】:
场景: 从以下 XML 中,将学生的分数和科目与“-”连接起来,并将其作为 JSON 输出。
输入:
<StudentsData>
<Student name="ABC" rollnumber="123">
<Subject name="Maths" marks="90" Sem="1st"/>
<Subject name="Eng" marks="67" Sem="1st"/>
<Subject name="Physics" marks="54" Sem="1st"/>
<Subject name="Chemitry" marks="77" Sem="1st"/>
<Subject name="Biology" marks="89" Sem="1st"/>
</Student>
<Student name="DEF" rollnumber="123">
<Subject name="Maths" marks="87" Sem="1st"/>
<Subject name="Eng" marks="89" Sem="1st"/>
<Subject name="Physics" marks="88" Sem="1st"/>
<Subject name="Chemitry" marks="55" Sem="1st"/>
<Subject name="Biology" marks="87" Sem="1st"/>
</Student>
</StudentsData>
预期输出
[
{
"Name": "ABC",
"Sub1": "Maths-90",
"Sub2" : "Eng-67",
"Sub3" : "Physics-54",
"Sub4" : "Chemitry-77",
"Sub5" : "Biology-89"
},
{
"Name": "DEF",
"Sub1": "Maths-87",
"Sub2" : "Eng-89",
"Sub3" : "Physics-88",
"Sub4" : "Chemitry-55",
"Sub5" : "Biology-87"
}
]
我想做什么:
%dw 2.0
output application/json
fun concatenateMarksAndSubject(items) = (items reduce ((item, accumulator = []) ->
accumulator << (item.@name ++ "|" ++ item.@marks)
))
---
payload.StudentsData.*Student map ((student, index) -> {
"Name": student.@name,
"Sub$(index)" : concatenateMarksAndSubject(student.*Subject)
} )
请帮忙。提前致谢
【问题讨论】: