我正在使用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在哪里?我做错了什么?
答案 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 ...; - )