ObjectId未序列化为JSON

eve*_*zon 1 json mongodb scalatra objectid json4s

我正在使用scalatra,并将servlet配置为始终返回JSON(如相应指南中所述)。使用MongoDB和Salat使我回到将MongoDBObject读回到我的case类中的地步-这似乎很棒。

我的案例课:

import org.bson.types.ObjectId
import com.novus.salat.annotations.raw.Key

case class Player(_id: ObjectId, firstName: String, ...)
Run Code Online (Sandbox Code Playgroud)

打印case类对象将输出以下内容:

Player(547489ee93f4272e548ded63,Peter,...)
Run Code Online (Sandbox Code Playgroud)

如您所见,objectid是org.bson.types.ObjectId。自动序列化为JSON会将其发送到浏览器:

{"_id":{},"firstName":"Peter",...}
Run Code Online (Sandbox Code Playgroud)

我的ObjectID在哪里?我究竟做错了什么?

eve*_*zon 5

我在网上找到了以下内容:https : //gist.github.com/dozed/5631680

经过一个小测试,似乎我要做的只是从更改servlet中的代码。

protected implicit val jsonFormats: Formats = DefaultFormats
Run Code Online (Sandbox Code Playgroud)

protected implicit val jsonFormats: Formats = DefaultFormats + new ObjectIdSerializer
Run Code Online (Sandbox Code Playgroud)

并添加

import org.json4s.mongo.ObjectIdSerializer
Run Code Online (Sandbox Code Playgroud)

也许这会帮助另一个Scalatra-NOOB ... ;-)