2
でコンパイルすることはできませんこれは私のコードです:toJson(地図( "成功" - - >真、 "メッセージ"> strが))PLAY2
import play.api.mvc._
import play.api.libs.json._
import play.api.libs.json.Json._
import play.api.libs.json.Writes._
class BaseController extends Controller with Secured with DefaultWrites {
private implicit def str2json(str: String) = new {
def asSuccessJson = toJson(Map("success" -> true, "message" -> str)) // (*)
def asFailedJson = toJson(Map("success" -> false, "message" -> str)) // (*)
}
}
しかし、それは2でコンパイルすることはできません(*)
行。エラーメッセージは次のとおりです。
def asSuccessJson = toJson(Map("success" -> true.toString, "message" -> str))
お知らせtrue.toString
:
Multiple markers at this line
- No Json deserializer found for type scala.collection.immutable.Map[java.lang.String,Any]. Try
to implement an implicit Writes or Format for this type.
- not enough arguments for method toJson: (implicit tjs:
play.api.libs.json.Writes[scala.collection.immutable.Map[java.lang.String,Any]])
play.api.libs.json.JsValue.Unspecified value parameter tjs.
私はとしてそれを記述する必要があります。それはうまくいくが退屈だ。
修正方法?
...プレイ2の次のリリースでビットを「美化」される次のリリースを待つが、現在のものは完璧ではありません。 – Freewind
現在のAPIは少し粗いですが、魔法やイントロスペクションなしで必要なものすべてを提供します。これらの原則は、いくつかの砂糖といくつかの新しいツールで守られています...) – mandubian
理論上、実行時にMap [String、Any]のすべての値を既存のシリアライザでシリアル化しようとするシリアライザを書くことは可能でしょうか?可能であれば、実行時に直列化する機能を持たない、フォーマットに依存しないAPIレイヤーを書くことはできません – Ciantic