考虑一下代码:
val myList : List[Map[String, AnyRef]] = ...
//during spray routing
import spray.json._
complete(myList.toJson)
我得到了错误:
Cannot find JsonWriter or JsonFormat type class for List[Map[String,AnyRef]]
首先为什么???喷雾spray.json.CollectionFormats来源包含:
implicit def listFormat[T :JsonFormat] = new RootJsonFormat[List[T]] {
def write(list: List[T]) = JsArray(list.map(_.toJson).toVector)
def read(value: JsValue): List[T] = value match {
case JsArray(elements) => elements.map(_.convertTo[T])(collection.breakOut)
case x => deserializationError("Expected List as JsArray, but got " + x)
}
}
所以每个列表项理论上都可以通过_.toJson
调用进行转换。 _
为Map[String,AnyRef]
,但也支持Map
类型。为什么我的例子没有编译?如何让它发挥作用?