我正在编写一个 RESTful 接口,我想为 Ember 数据编组和解组 JSON。问题是 Ember Data 想要实体名称,而我尝试过的两个库,spray-json 和 json4s,似乎并不容易做到这一点。
所需的 Ember 数据格式
{
"coursePhoto": {
"photoId": 1
}
}
当前默认格式:
{"photoId":15}
这应该来自一个案例类:
case class CoursePhoto(photoId: Long)
我确实使用以下自定义代码运行它:
object PtolemyJsonProtocol extends DefaultJsonProtocol {
implicit object CoursePhotoFormat extends RootJsonFormat[CoursePhoto] {
def write(cp: CoursePhoto) =
JsObject("CoursePhoto" -> JsObject("photoId" -> JsNumber(cp.photoId)))
def read(value: JsValue) = value match {
case coursePhotoJsObject: JsObject => {
CoursePhoto(coursePhotoJsObject.getFields("CoursePhoto")(0).asJsObject
.getFields("photos")(0).asInstanceOf[JsArray].elements(0)
.asInstanceOf[JsNumber].value.toLong)
}
case _ => deserializationError("CoursePhoto expected")
}
}
这段代码看起来非常脆弱和丑陋,所有的asInstanceOf
and (0)
.
鉴于我正在使用 Scala 编写 Spray 什么是获得命名根 JSON 输出的好方法?我很高兴使用任何与 Spray 完美集成且性能合理的 JSON 库来做到这一点。