如何使用spray-json序列化Map [String,Any]?我试试
val data = Map("name" -> "John", "age" -> 42)
import spray.json._
import DefaultJsonProtocol._
data.toJson
Run Code Online (Sandbox Code Playgroud)
它说Cannot find JsonWriter or JsonFormat type class for scala.collection.immutable.Map[String,Any].
Gan*_*ead 25
这是我用来执行此任务的隐式转换器:
implicit object AnyJsonFormat extends JsonFormat[Any] {
def write(x: Any) = x match {
case n: Int => JsNumber(n)
case s: String => JsString(s)
case b: Boolean if b == true => JsTrue
case b: Boolean if b == false => JsFalse
}
def read(value: JsValue) = value match {
case JsNumber(n) => n.intValue()
case JsString(s) => s
case JsTrue => true
case JsFalse => false
}
}
Run Code Online (Sandbox Code Playgroud)
它是从Spray用户组中的这篇文章改编而来的,但我无法获得并且不需要将嵌套的Sequences和Maps写入Json,所以我把它们拿出来了.
另一个选项应该适用于您的情况
data.parseJson.convertTo[Map[String, JsValue]]
Run Code Online (Sandbox Code Playgroud)