0

私はscalaの初心者であり、Rubyのバックグラウンドを持っているため、scalatra、liftweb mongoレコードを使用したmongodb、およびjsonのシリアライゼーションとデシリアライゼーション用のargonautを使用するWebサービスでjson応答をレンダリングするのに問題があります。

ただし、 http: //argonaut.io/ に示されている例に基づいて、net.liftweb.mongo.record ライブラリを使用する場合にこれがどのように機能するかを理解できません。

これをコンパイルすると、type mismatch. エラーの説明は、コード スニペットの後に続きます。

パッケージ firstscalatraapp

org.scalatra をインポート
net.liftweb.mongodb._ をインポート
import net.liftweb.mongodb.record.MongoRecord
import net.liftweb.mongodb.record.field.ObjectIdPk

import net.liftweb.record.field.StringField
import net.liftweb.record.field.IntField
net.liftweb.record.field.PasswordField のインポート
net.liftweb.record.field.DateTimeField のインポート
import net.liftweb.mongodb.record.MongoMetaRecord
アルゴナウトをインポート._
アルゴノートをインポート._

case class Person private extends MongoRecord[Person] with ObjectIdPk[Person] {
    デフメタ=人   
    object age extends IntField(this, 3)
    オブジェクト名 extends StringField(this, 29)
    object created_at extends DateTimeField(this)
    object password extends PasswordField(this)
}

object Person は MongoMetaRecord[Person] {
 暗黙の def PersonCodecJson: CodecJson[Person] =
  casecodec3(Person.apply, Person.unapply)("name", "age", "things")
}


私が得るエラーは


[error]  found   : () => firstscalatraapp.Person
[error]  required: (?, ?, ?) => ?
[error]   casecodec3(Person.apply, Person.unapply)("name", "age", "things")
[error]                     ^
[error] one error found
[error] (compile:compile) Compilation failed

コンストラクターはパラメーターを受け入れず、mongo ライブラリーvalはクラスに必要なフィールドを生成しているように見えるため、これは論理的に思えます (リフト mongo ラッパーが何をするのかまだ完全には理解していません)。

では、person 型のオブジェクトをシリアライズできるように暗黙的に定義するにはどうすればよいでしょうか。

また、コレクションを扱っているときにシリアライゼーション機能を定義するにはどうすればよいですか。たとえば、私が持っているときList[Person]

前もって感謝します。これについて何か助けていただければ幸いです。

4

1 に答える 1