【发布时间】:2018-06-13 11:49:34
【问题描述】:
我在弄清楚如何使用json4s-jackson 库将带有根数组的json 解码为案例类时遇到了一些麻烦。
直接提取到案例类而不是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
有没有“正确”的解码根数组的方法? 有任何优雅的方法吗?
【问题讨论】:
标签: scala case-class json4s http4s