Как я могу удалить первый элемент из массива, убедившись, что результат по-прежнему является массивом в jsonata?

Я хотел бы создать выражение jsonata, которое удаляет первый элемент массива. Для этого есть очень простое выражение:

array1#$pos[$pos!=0]

но при применении этого выражения к массиву, содержащему 2 элемента, это выражение не возвращает массив, содержащий только второй элемент, а возвращает второй элемент, как вы можете видеть в следующем тесте jsonata

https://try.jsonata.org/gl0l_wnGe

введите описание изображения здесь

Так что это не то, что я хочу. Я ищу выражение jsonata, которое для "new_array1" не возвращает "two", но возвращает ["two"].

Это немного упрощенная версия реальной проблемы, с которой я столкнулся. Фактическая проблема заключается в том, что я хочу удалить элемент с определенным индексом в массиве, и у меня такая же проблема, когда в массиве 2 элемента.


person JanVdA    schedule 16.09.2020    source источник


Ответы (1)


Он возвращает "two" вместо ["two"] из-за правил выравнивания последовательности https://docs.jsonata.org/processing#sequences. Добавление пустого [] в конец выражения пути превратит последовательность в массив. Попробуй это:

{
    "new_array1": array1#$pos[$pos!=0][],
    "new_array2": array2#$pos[$pos!=0][]
}

https://try.jsonata.org/BaO2T7_9i

person Andrew Coleman    schedule 17.09.2020