Скажем, у меня есть JSON байтовой строки, которая выглядит как-тоПолучение коллекции значений из JSON байтовой строки с помощью объектива-эсон
{
messages: [
{...},
{...}
]
}
Я хотел бы использовать объектив, чтобы получить список/вектор сообщений из Это. У меня есть функция toMessage
, которая может превратить Value
в Maybe Message
.
Я попробовал эту композицию key "messages" . values . to toMessage
(to
от Control.Lens.Getter
но результат Maybe Message
и он просто становится Nothing
.
В настоящее время я делаю это
msgsJson <- c ^? key "messages"
let msgs = toList $ mapMaybe message $ msgsJson ^.. values
(mapMaybe
от witherable
, toList
- это преобразование Vector
в список) , но я хотел бы знать, есть ли способ создать различные линзы, чтобы получить один объектив, который делает это.
Хм, я придется снова попробовать. Посмотрите, что я сделал неправильно в первый раз. –