Jolt Transform JSON Spec สำหรับ Array Input
Aug 27 2020
ฉันกำลังพยายามดำเนินการเปลี่ยน JOLT ด้วยข้อมูลจำเพาะด้านล่างซึ่งใช้งานไม่ได้ ไม่แน่ใจว่าทำผิดอะไร ต้องการความช่วยเหลือในกรณีนี้ เอาต์พุต JSON มาเป็นอ็อบเจ็กต์แทน Array และ shift ก็ไม่ทำงานตามที่คาดไว้
Input : [
{
"Header": {
"Number": 1,
"Id": "JO"
},
"Name": "John"
},
{
"Header": {
"Number": 2,
"Id": "JS"
},
"Name": "Justin"
}
]
Spec : [
{
"operation": "shift",
"spec": {
"*": {
"Header": "Header",
"Name": "Header.Name"
}
}
}
]
Expected Output : [
{
"Header": {
"Number": 1,
"Id": "JO",
"Name": "John"
}
},
{
"Header": {
"Number": 2,
"Id": "JS",
"Name": "Justin"
}
}
]
Actual Output : {
"Header" : [ {
"Number" : 1,
"Id" : "JO",
"Name" : "John"
}, {
"Number" : 2,
"Id" : "JS"
} ]
}
คำตอบ
1 kasptom Aug 27 2020 at 20:46
คุณจะต้องระบุว่า"Header"วัตถุภายในอาร์เรย์
ยิ่งไปกว่านั้นดัชนีของอาร์เรย์ที่คุณวาง"Header"วัตถุสำหรับแต่ละองค์ประกอบของอาร์เรย์
นั่นคือสิ่งที่ข้อกำหนดด้านล่างทำ (โดยใช้[&1]- apmersand wildcardรวมกับอาร์เรย์):
[
{
"operation": "shift",
"spec": {
"*": {
"Header": "[&1].Header",
"Name": "[&1].Header.Name"
}
}
}
]
แหล่งที่มา:
- Shiftr.java Javadocs :
- อาร์เรย์
- สัญลักษณ์แทนเครื่องหมายและ
- คำตอบอื่น ๆ : "ฉันจะแปลงอาร์เรย์โดยใช้ Jolt ได้อย่างไร"
- แอปพลิเคชันสาธิตที่เชื่อมโยงในjolt repoเพื่อทดสอบข้อมูลจำเพาะ