У меня возникли проблемы с выяснением того, как декодировать json
с корневым массивом в класс case с использованием библиотеки json4s-jackson
.
Цель извлечения непосредственно в класс case, а не в Seq[Username]
, состоит в проверке существования единственного значения на стадии decode -> construction
, а не в более позднее время.
Когда корнем является , а не массив , все отлично работает :
Рабочий пример:
{
"users": [{"name": "someName1"}]
}
case class Username(name: String)
case class UsersInfo(users: Seq[Username])
implicit private def reader: Reader[UsersInfo] = (value: JValue) => value.extract[UsersInfo]
def decode: EntityDecoder[IO, UsersInfo] = jsonOf[IO, UsersInfo]
Но , когда у json есть корневой массив, он начинает плохо пахнуть:
[
{
"name": "someFancyName"
}
]
case class UsersInfo extends Seq[Username] // Smelly & does not compile
Есть ли "правильный" способ декодирования корневых массивов ?Есть ли какой-нибудь элегантный способ сделать это?