在播放应用程序中写入json格式化程序时出错
我正在用Scala编写Play 2.3.2应用程序。 我已经编写了一个类来表示系统中类别和属性之间的相关性。 该类的声明如下所示:在播放应用程序中写入json格式化程序时出错,json,scala,playframework,Json,Scala,Playframework,我正在用Scala编写Play 2.3.2应用程序。 我已经编写了一个类来表示系统中类别和属性之间的相关性。 该类的声明如下所示: case class Correlation(val category: String, val attribute: String, val value: Double, val weight: Double) 现在我正在编写一个json格式化程序,但是我遇到了一些错误。 格式化程序的编写方式如下所示: object Corr
case class Correlation(val category: String, val attribute: String,
val value: Double, val weight: Double)
现在我正在编写一个json格式化程序,但是我遇到了一些错误。
格式化程序的编写方式如下所示:
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教程的例子,但我无法找出我的错误所在。
对象关联{
隐式val jsonModelReads=Json.reads[Correlation]
隐式val jsonModelWrites=Json.writes[Correlation]
隐式val jsonModelFormat=Json.format[Correlation]
}
然后导入相关性
对象关联{
隐式val jsonModelReads=Json.reads[Correlation]
隐式val jsonModelWrites=Json.writes[Correlation]
隐式val jsonModelFormat=Json.format[Correlation]
}
然后导入相关性。非常简单的修复:
(__ "category").read[String]
应该是
(__ \ "category").read[String]
对于所有其他行也是如此。非常简单的修复:
(__ "category").read[String]
应该是
(__ \ "category").read[String]
以及所有其他行。在case类中删除
val
。它是由编译器添加的。@AndrzejJozwik完成。在case类中删除val
。它是由编译器添加的。@AndrzejJozwik完成了。它可以编译,但是if如何工作呢??它创建一个json,标记名等于类val??在本例中是类似json的{“category”:“c”,“attribute”:“a”,“value”:20,“weight”:2}?这是scala宏,请看,我不知道读写宏。这个解决方案比我的好。谢谢。是的,如果使用了格式,那么读取
和写入
是多余的。这也不能解释OP为什么会出现编译错误。它是编译的,但是如果这个代码是如何工作的??它创建一个json,标记名等于类val??在本例中是类似json的{“category”:“c”,“attribute”:“a”,“value”:20,“weight”:2}?这是scala宏,请看,我不知道读写宏。这个解决方案比我的好。谢谢。是的,如果使用了格式,那么读取
和写入
是多余的。这也不能解释OP为什么会出现编译错误。