1

私はscalatraを使用しており、サーブレットが常にJSONを返すように構成しています(それぞれのガイドで説明されています)。MongoDB と Salat を使用すると、MongoDBObject を自分のケース クラスに読み込むところまで行き着きます。これはうまく機能しているようです。

私のケースクラス:

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 はどこにありますか? 私は何を間違っていますか?

4

1 に答える 1

5

Web で次の情報を見つけました: https://gist.github.com/dozed/5631680

小さなテストの後、私がしなければならなかったのは、サーブレットのコードを

protected implicit val jsonFormats: Formats = DefaultFormats

protected implicit val jsonFormats: Formats = DefaultFormats + new ObjectIdSerializer

そして追加

import org.json4s.mongo.ObjectIdSerializer

多分これは別のScalatra-NOOBに役立つでしょう... ;-)

于 2014-11-26T11:46:32.997 に答える