我在Scala中编写了一个Play 2.3.2应用程序。 我编写了一个表示系统中类别和属性之间相关性的类。 该类声明如下:
case class Correlation(val category: String, val attribute: String,
val value: Double, val weight: Double)
现在我正在写一个json格式化程序,但我遇到了一些错误。 Formatter的写法如下:
object CorrelationFormatters {
implicit val storageFormatter: Format[Correlation] = {
val correlationReads: Reads[Correlation] = (
(__ "category").read[String] and
(__ "attribute").read[String] and
(__ "value").read[Double] and
(__ "weight").read[Double]
)(Correlation.apply _)
val correlationWrites: Writes[Correlation] = (
(__ "category").write[String] and
(__ "attribute").write[String] and
(__ "value").write[Double] and
(__ "weight").write[Double]
)(unlift(Correlation.unapply _))
}
}
但我收到以下编译错误:
error] /Users/alberto/git/bdrim/modules/recommendation-system/app/recommendationsystem/formatters/json/CorrelationFormatters.scala:19: ')' expected but string literal found.
[error] (__ "category").read[String] and
[error] ^
[error] /Users/alberto/git/bdrim/modules/recommendation-system/app/recommendationsystem/formatters/json/CorrelationFormatters.scala:31: ')' expected but '}' found.
[error] }
[error] ^
[error] /Users/alberto/git/bdrim/modules/recommendation-system/app/recommendationsystem/formatters/json/CorrelationFormatters.scala:19: ')' expected but string literal found.
[error] (__ "category").read[String] and
[error] ^
[error] /Users/alberto/git/bdrim/modules/recommendation-system/app/recommendationsystem/formatters/json/CorrelationFormatters.scala:31: ')' expected but '}' found.
[error] }
[error] ^
[error] two errors found
出了什么问题? 我已经使用过类似ScalaJsonCombinators的教程,但是我无法找到我错在哪里。
答案 0 :(得分:2)
object Correlation {
implicit val jsonModelReads = Json.reads[Correlation]
implicit val jsonModelWrites = Json.writes[Correlation]
implicit val jsonModelFormat = Json.format[Correlation]
}
然后import Correlation._
答案 1 :(得分:2)
非常简单的修复:
(__ "category").read[String]
应该是
(__ \ "category").read[String]
对于所有其他线路也是如此..