So habe ich den folgenden Code:Scala Compiler (2.11.7) Anomalie mit Play JSON Schreibt
Basis:
import play.api.libs.json.{JsNull, Json, JsValue, Writes}
case class Cost(cost: Option[Double])
Dies kompiliert:
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
)
}
}
}
Aber das tut nicht Kompilieren
case object Cost {
def writes = new Writes[Cost] {
override def writes(r: Cost): JsValue = {
Json.obj(
"cost" -> r.cost.map(Json.toJson(_)).getOrElse(JsNull)
)
}
}
}
Compiler-Fehler ist der folgende ing:
type mismatch;
[error] found : Object
[error] required: play.api.libs.json.Json.JsValueWrapper
[error] "cost" -> r.cost.map(Json.toJson(_)).getOrElse(JsNull)
Im letzteren, wenn ich .asInstanceOf verwenden [JsValue] es funktioniert, aber mit IntelliJ Grau- es heraus sagen, dass es nicht notwendig ist, da es nichts anderes, dass JsValue sowieso sein kann. Was könnte der Grund dafür sein, dass der Scala-Compiler (2.11.7) die Klasse nicht korrekt erkennt?
Kompilieren direkt mit SBT? – cchantep
Ja, kompiliert von SBT. – mpartan