【发布时间】:2015-09-11 10:08:03
【问题描述】:
我有 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 并同时进行验证?感谢您的建议!
【问题讨论】:
-
为什么不
(__ \ "amount").read[BigDecimal].filter(_ > BigDecimal(0.01))
标签: json scala validation playframework type-conversion