私は Play Framework 2.0 に取り組んでおり、Jerkson を使用して JSON 文字列を解析しています。私はそれをうまく使って、文字列の不変リストを次のように解析していました:
Json.parse( jsonStr ).as[ List[String] ]
しかし、試してみると、このコードはうまくいきません
Json.parse( jsonStr ).as[ MutableList[String] ]
これを簡単に行う方法を知っている人はいますか?
私は Play Framework 2.0 に取り組んでおり、Jerkson を使用して JSON 文字列を解析しています。私はそれをうまく使って、文字列の不変リストを次のように解析していました:
Json.parse( jsonStr ).as[ List[String] ]
しかし、試してみると、このコードはうまくいきません
Json.parse( jsonStr ).as[ MutableList[String] ]
これを簡単に行う方法を知っている人はいますか?
あなたの 2 行目は、現在の trunkseqReads
のbyの置き換えのおかげで、Play 2.0 の将来のバージョンでそのまま動作します:traversableReads
implicit def traversableReads[F[_], A](implicit bf: generic.CanBuildFrom[F[_], A, F[A]], ra: Reads[A]) = new Reads[F[A]] {
def reads(json: JsValue) = json match {
case JsArray(ts) => {
val builder = bf()
for (a <- ts.map(fromJson[A](_))) {
builder += a
}
builder.result()
}
case _ => throw new RuntimeException("Collection expected")
}
}
したがって、ソースから Play をビルドする意思がある場合、または待機する意思がある場合は、問題ありません。それ以外の場合は、上記のメソッドを独自のコードのどこかにドロップしてReads
、スコープ内の適切なインスタンスを取得するか、さらに良いことに、単に Alexey Romanov のソリューションを使用するか、または (何よりも) を使用しないでMutableList
ください。
例new MutableList[String]() ++= Json.parse( jsonStr ).as[ List[String] ]
(@DanSimonが正しいと仮定してMutableList
)。しかし、Scala で最もよく使用される変更可能なリストのようなコレクションは、またはBuffer
として取得できるです。Buffer(Json.parse( jsonStr ).as[ List[String] ]
Json.parse( jsonStr ).as[ List[String] ].toBuffer