在播放应用程序中写入json格式化程序时出错

在播放应用程序中写入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

我正在用Scala编写Play 2.3.2应用程序。 我已经编写了一个类来表示系统中类别和属性之间的相关性。 该类的声明如下所示:

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为什么会出现编译错误。