Spray-jsonライブラリは、基本的なScalaタイプをtoJson
メソッドで拡張します。Any
基になるタイプにそのようなヒモがあるJsValue
場合は、をに変換したいと思います。私の最善の試みはうまくいきますが、冗長です:
import cc.spray._
val maybeJson1: PartialFunction[Any, JsValue] = {
case x: BigDecimal => x.toJson
case x: BigInt => x.toJson
case x: Boolean => x.toJson
case x: Byte => x.toJson
case x: Char => x.toJson
case x: Double => x.toJson
case x: Float => x.toJson
case x: Int => x.toJson
case x: Long => x.toJson
case x: Short => x.toJson
case x: String => x.toJson
case x: Symbol => x.toJson
case x: Unit => x.toJson
}
理想的には、私はこのようなもの(不可能)を好むでしょう:
def maybeJson2(any: Any): Option[JsValue] = {
if (pimpExistsFor(any))
Some(any.toJson)
else
None
}
強化されたすべてのタイプを列挙せずにこれを行う方法はありますか?