play! の json コンビネータを使用して、JSON の検証、読み取り、書き込みを行っています。設定されていない場合、読み取りまたは書き込みでデフォルト値を指定することはできますか?
json の検証は次のように行われます (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 に直接追加せずにデフォルト値を設定する可能性はありますか?
前もって感謝します!