Расшифровать вложенный массив с помощью Circe-optics
У меня такой JSON:
"data": {
"project": {
"activityChildren": [
{
"id": 2,
"parents": [
{
"id": 1
}
]
},
]
}
}
Я хотел бы расшифровать это до List[(Long, List[Long])]
с круговой оптикой. Я дошел до:
val activityParents: Map[Long, List[Long]] = root.data.activityChildren.each.json
.getAll(json)
.flatMap { activity =>
root.id.long.getOption(activity).map(_ -> root.parents.each.long.getAll(activity))
}
.toMap
Интересно, можно ли определить для этого одну линзу, которая просто превращает JSON в желаемую карту без явного сопоставления промежуточного массива. Если да, то как?