我在弄清楚如何使用库将json
带有根数组的 a 解码为案例类时遇到了一些麻烦。json4s-jackson
直接提取到案例类而不是提取到 a 的目的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
是否有解码根数组的“正确”方法?有什么优雅的方法吗?