書き込みI次のコードを持っている:Scalaのコンパイラ(2.11.7)はプレイJSONで異常がそう
ベース:
case object Cost {
def writes = new Writes[Cost] {
override def writes(r: Cost): JsValue = {
val cost = r.cost.map(Json.toJson(_)).getOrElse(JsNull)
Json.obj(
"cost" -> cost
)
}
}
}
をしかし、これにはない:
import play.api.libs.json.{JsNull, Json, JsValue, Writes}
case class Cost(cost: Option[Double])
これはコンパイルコンパイル
case object Cost {
def writes = new Writes[Cost] {
override def writes(r: Cost): JsValue = {
Json.obj(
"cost" -> r.cost.map(Json.toJson(_)).getOrElse(JsNull)
)
}
}
}
コンパイラエラーは次のとおりです後者で
type mismatch;
[error] found : Object
[error] required: play.api.libs.json.Json.JsValueWrapper
[error] "cost" -> r.cost.map(Json.toJson(_)).getOrElse(JsNull)
を私は.asInstanceOfを使用する場合は、[JsValue]それは動作しますが、IntelliJのは、それはとにかくJsValueその何かことができないとして、それは不要だと言って、それをグレーで:INGの。 Scalaコンパイラ(2.11.7)がクラスを正しく検出しない理由は何でしょうか?
SBTで直接コンパイルしますか? – cchantep
はい、SBTからコンパイルします。 – mpartan