Jolt Transform JSON Spec for Array Input
Aug 27 2020
Próbuję wykonać operację zmiany JOLT z poniższą specyfikacją, która nie działa. Nie jestem pewien, jaki błąd popełniłem. Potrzebujesz pomocy w tym przypadku. Wyjście JSON pojawia się jako obiekt zamiast Array, a shift również nie działa zgodnie z oczekiwaniami.
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"
} ]
}
Odpowiedzi
1 kasptom Aug 27 2020 at 20:46
Musisz również określić, że "Header"obiekt znajduje się wewnątrz tablicy .
Ponadto indeks tablicy, w której umieszczasz "Header"obiekt dla każdego elementu tablicy.
To właśnie robi poniższa specyfikacja (używając [&1]- apmersand wildcard w połączeniu z tablicą):
[
{
"operation": "shift",
"spec": {
"*": {
"Header": "[&1].Header",
"Name": "[&1].Header.Name"
}
}
}
]
Źródła:
- Shiftr.java javadocs :
- Tablice
- Symbol wieloznaczny ampersand
- Inna odpowiedź: „Jak przekształcić tablicę za pomocą Jolt?”
- Aplikacja demonstracyjna połączona w repozytorium wstrząsów w celu przetestowania specyfikacji