正如错误所说,您需要为 Map[String,Object] 实现写入
这是它的样子 . 我编译了这段代码,看起来很好 . (我假设您正在使用Play框架) . 仅供参考:那里的案例仅适用于起点 . 您可以根据您的要求在那里添加/修改更多 case .
import play.api.libs.json._
import play.api.libs.json.Writes
import play.api.libs.json.Json.JsValueWrapper
val objMap = scala.collection.immutable.Map("id" -> "id", "tags" -> Seq("tag1", "tag2"))
Json.toJson(objMap)
implicit val writeAnyMapFormat = new Writes[Map[String, Object]] {
def writes(map: Map[String, Object]): JsValue = {
Json.obj(map.map {
case (s, a) => {
val ret: (String, JsValueWrapper) = a match {
case _: String => s -> JsString(a.asInstanceOf[String])
case _: java.util.Date => s -> JsString(a.asInstanceOf[String])
case _: Integer => s -> JsString(a.toString)
case _: java.lang.Double => s -> JsString(a.toString)
case None => s -> JsNull
case JsArray(elements) => s -> JsArray(elements)
case _ => s -> JsArray(a.asInstanceOf[List[Int]].map(JsNumber(_)))
}
ret
}
}.toSeq: _*)
}
}