Spray-json库使用方法扩展了基本的 Scala 类型toJson
。如果底层类型存在这样的皮条客,我想将其转换Any
为 a 。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
}
有没有一种方法可以做到这一点,而无需枚举已丰富的每种类型?