play2を使ってScalaのJsonを読み込み、その情報を使ってオブジェクトを作成しようとすると、私は立ち往生します。 これは私のコードは今ある:Jsonはscala/playを使って解析します:どのように特性を得るか?
trait MyTrait {
}
object object1 extends MyTrait {
override def toString: String = "object1"
}
object object2 extends MyTrait{
override def toString: String = "object2"
}
def strToObject(str: String): MyTrait = str match {
case "object1" => object1
case "object2" => object2
}
これは私がJSON書き方です:
implicit val traitWrites = new Writes[MyTrait] {
def writes(t: MyTrait) = Json.obj(
"t" -> t.toString)
}
出力
println("object1: " + Json.toJson(object1).toString)
println("object2: " + Json.toJson(object1).toString)
object1: {"t":"object1"}
object2: {"t":"object1"}
これは私が読んしようとしている方法ですが、それはありませんうまくいかない。
implicit val traitReads: Reads[MyTrait] = (
(JsPath \ " t").read[String])map(str => strToObject(str)) (MyTrait.apply _)
val jsonObject = Json.parse(Json.toJson(object1).toString)
val aux = jsonObject \ "t"
val myobject = aux.as[MyTrait]
それは文句を言う(MyTrait.apply _)とと[MyTrait]として "が見つかりません:値MyTraitを"。しかし、私は標準的なクラスで行うことと全く同じです。したがって、どのように進めるべきかは分かりません。
私はPlay(とScalaでもあまりにも真実である)とかなりの初心者ですので、おそらく私は何か非常に基本的な間違ったことをやっています。特に、私は "地図"呼び出しの疑いが強い。
乾杯、
封印された形質自動的おかげで非常に多く、魅力として働く – cchantep