我是scala新手,來自Ruby背景,所以在我的web服務中使用scalatra,mongodb和liftweb呈現json響應時遇到問題mongo記錄和argonaut爲JSon序列化和反序列化。Scala toJson當使用net.liftweb.mongodb.record.MongoRecord和Argonaut
但是基於http://argonaut.io/給出的例子,我無法弄清楚在使用net.liftweb.mongo.record庫時這是如何工作的。
在編譯時,我得到一個錯誤,說一個type mismatch
。錯誤描述遵循代碼片段。
package firstscalatraapp import org.scalatra import 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 import net.liftweb.record.field.PasswordField import net.liftweb.record.field.DateTimeField import net.liftweb.mongodb.record.MongoMetaRecord import argonaut._ import Argonaut._ case class Person private extends MongoRecord[Person] with ObjectIdPk[Person] { def meta = Person object age extends IntField(this, 3) object name extends StringField(this, 29) object created_at extends DateTimeField(this) object password extends PasswordField(this) } object Person extends Person with MongoMetaRecord[Person] { implicit 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
因爲構造函數不接受任何參數和蒙戈庫,它似乎是合乎邏輯似乎產生val
的,我需要的類中的字段(我仍然不完全明白什麼是電梯蒙戈包裝)。
那麼我該如何定義隱式才能找到serialise類型的對象。
另外我如何在處理集合時定義序列化功能。例如,當我有一個List[Person]
。
在此先感謝。我真的很感激任何幫助,我可以得到這一點。