我有JSON:
{"amount":"123.45"}
我希望将其转换为课程case class Record(amount: BigDecimal)
。
自动播放读取(Json.reads[Record]
)正常工作,直到我需要验证金额是否为> 0.01
。我写了自定义读物:
val recordReads: Reads[Record] = (
(JsPath \ "amount").read[String].map(x => BigDecimal(x))(min(BigDecimal("0.01")))
)(Record.apply _)
但此解决方案会导致编译错误Cannot prove that scala.math.BigDecimal <:< scala.math.BigDecimal => C.
。如果我使用BigDecimal
等更改Double
如何将字符串转换为BigDecimal
并同时验证?感谢您的想法!
答案 0 :(得分:1)
定义读取的正确方法如下所示:
val recordReads: Reads[Record] = (
(JsPath \ "amount").read[BigDecimal](
min(BigDecimal("0.01"))
)
).map(Record.apply _)