Как преобразовать массив строк в массив объектов с помощью jsonata?

#transform #jsonata

Вопрос:

У меня есть массив строк:

 "Street": ["10 First Avenue","Third Floor"]
 

Что я хотел бы преобразовать в массив объектов с помощью jsonata:
https://try.jsonata.org/

 "street": [
    {
        "attributes": {"line": "1"},
        "text": "10 First Avenue"
    },
    {
        "attributes": {"line": "2"},
        "text": "Third Floor"
    }
]
 

У меня это работает, когда я принимаю фиксированную длину, но есть различия, и я не уверен, как получить индекс.

У меня есть работоспособное использование

 Street @ $street.$.[
    {
        "attributes": {"line": "1"},
        "text": $street
    }
]
 

Но у меня все еще нет номера линии

Ответ №1:

Вы можете зафиксировать позицию в последовательности с помощью # оператора. Это число, поэтому вам нужно будет привести его к строке, если это то, что вам нужно:

 Street @ $street #$i.{
    "attributes": {"line": $string($i 1)},
    "text": $street
}
 

Видишь https://try.jsonata.org/Q5Tt46GBT