2
我使用play!的json組合器來驗證,讀取和寫入JSON。如果它們沒有設置,是否可以在讀取或寫入中指定默認值? JSON的使用Play設置默認值! Json Combinators
驗證這樣的(其中JSON是一種JsValue)來完成:
json.validate[Pricing]
我的代碼是:
case class Pricing(
_id: ObjectId = new ObjectId,
description: String,
timeUnit: TimeUnit.Value,
amount: Double = 0.0) {
@Persist val _version = 1
}
我的讀取和寫入:
implicit val pricingReads: Reads[Pricing] = (
(__ \ "_id").read[ObjectId] and
(__ \ "description").read[String] and
(__ \ "timeUnit").read[TimeUnit.Value] and
(__ \ "amount").read[Double]
)(Pricing.apply _)
implicit val pricingWrites: Writes[Pricing] = (
(__ \ "_id").write[ObjectId] and
(__ \ "description").write[String] and
(__ \ "timeUnit").write[TimeUnit.Value] and
(__ \ "amount").write[Double]
)(unlift(Pricing.unapply))
所以如果我會收到像Json:
{"description": "some text", "timeUnit": "MONTH"}
我收到錯誤,該字段缺少_id
和amount
。有沒有可能在不將它直接添加到JsValue的情況下設置默認值?
在此先感謝!
這是使用'Option'的好處。但不幸的是它不能使用ObjectId(我使用play-salat作爲ORM)。無論如何,它適用於其他領域... – 3x14159265