Jolt Transform JSON Spec для ввода массива
Aug 27 2020
Я пытаюсь выполнить операцию сдвига JOLT со спецификацией ниже, которая не работает. Не уверен, какую ошибку я сделал. Нужна помощь в этом случае. Выходной JSON поступает как объект вместо массива, и 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 в сочетании с массивом):
[
{
"operation": "shift",
"spec": {
"*": {
"Header": "[&1].Header",
"Name": "[&1].Header.Name"
}
}
}
]
Источники:
- Shiftr.java javadocs :
- Массивы
- Подстановочный знак амперсанда
- Другой ответ: «Как преобразовать массив с помощью Jolt?»
- Демонстрационное приложение, связанное с репозиторием jolt для проверки спецификации