我有一个 Scala-Play Web 服务应用程序,它执行一些生成鞍帧的计算,并且需要将这些鞍帧转储到 Json 中。所以我定义一个frameWrites
这样的:
object JsonUtils {
implicit def frameWrites[RX, CX, E] = new Writes[Frame[RX, CX, E]] {
override def writes(frame: Frame[RX, CX, E]): JsValue = {
val json: JsArray = Json.arr(
(0 until frame.numRows).map { i =>
Json.obj(
frame.rowIx.at(i).toString ->
(0 until frame.numCols).map { j =>
Json.obj(
frame.colIx.at(j).toString -> frame.at(i, j).toString
)
}
)
})
json
}
}
}
然后尝试像这样使用它:
import utils.JsonUtils._
def computingAction = Action {
val pnlStatistics: Frame[String, String, Double] = ???
Ok(pnlStatistics)
}
但总是得到错误Cannot write an instance of org.saddle.Frame[String,String,Double] to HTTP response. Try to define a Writeable[org.saddle.Frame[String,String,Double]]
为了明确起见,我还尝试将其定义为以下内容的一部分JsonUtils
:
implicit def frameSSDWrites = frameWrites[String, String, Double]
但这一个也没有被捡起......
UPDATE显式调用作者有效:
Ok(frameWrites.writes(results("PnlStatistics")))