ObjectId未序列化为JSON

时间:2014-11-25 14:02:44

标签: 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, ...)

打印案例类对象输出:

Player(547489ee93f4272e548ded63,Peter,...)

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

{"_id":{},"firstName":"Peter",...}

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

1 个答案:

答案 0 :(得分:4)

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

经过一个小小的测试后,好像我只需要从

更改我的servlet中的代码
protected implicit val jsonFormats: Formats = DefaultFormats

protected implicit val jsonFormats: Formats = DefaultFormats + new ObjectIdSerializer

并添加

import org.json4s.mongo.ObjectIdSerializer

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