我正在尝试处理JSON,它可以选择包含' info'它包含。在以下case类和combinator中捕获哪个以读取对象中的JSON。但代码无法编译。有没有更好的方法处理这个?信息可以是空的。
case class Info(sometimestamp: Option[Long])
object Info {
implicit val InfoReads: Reads[Info] = (
(JsPath \ "sometimestamp").readNullable[Long]
)(Info.apply _)
}
{
...
"info" : {
"sometimestamp" : 1414535323436
}
}
编译错误:
found : play.api.libs.json.Reads[Option[Long]]
[error] required: play.api.libs.json.Reads[models.Payload.Info]
[error] ) (Info.apply _)
scala版本:2.11.2
感谢,
答案 0 :(得分:2)
我不认为当你没有真正组合任何东西时,组合器的功能语法是可行的。但是这样做:
implicit val InfoReads: Reads[Info] =
(JsPath \ "sometimestamp").readNullable[Long].map(Info(_))
您可能还会考虑将JSON初始宏用于这样一个简单的案例类:
implicit val InfoReads: Reads[Info] = Json.reads[Info]