当播放JSON返回结果时,任何人都知道如何指定BigDecimal
类型的精度?
例如,如果BigDecimal
值为100,那么当播放JSON返回JSON值时,如何显示为100.00?
答案 0 :(得分:0)
这不是一个Play游戏。 Play Json是杰克逊的一个包装(在我看来是一个很好的包装)。
如果您尝试将此用于资金,我怀疑您这样做,请不要在序列化时间应用舍入,因为您实际上可能会损失一些钱。在您的模型中做到这一点!与钱合作是一个单独的主题。
如果这与金钱无关,您可以为该属性应用单独的翻译。
正如我所说,适用于Jackson的内容也适用于Play JSON。您可以尝试仅为该属性定义序列化程序。您应该实现自己的JsonSerializer,并使用@JsonSerialize(using = <YourSerializer>.class)
注释您的属性。
答案 1 :(得分:0)
您只需要为您的对象提供writes
的实现,以执行您要查找的格式化(舍入),例如:
case class Thing(a: String, b: BigDecimal)
object Thing {
implicit val writes = new Writes[Thing] {
def writes(t: Thing): JsObject = Json.obj(
"a" -> t.a,
"b" -> t.b.setScale(2, RoundingMode.HALF_UP) // Round here
)
}
}
示例:
val t = Thing("some string", 10.123456789)
val j = Json.toJson(t)
println(Json.prettyPrint(j))
输出:
{
"a" : "some string",
"b" : 10.12
}