首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Scala play JSON for BigDecimal precision

Scala play JSON for BigDecimal precision
EN

Stack Overflow用户
提问于 2015-12-23 17:35:18
回答 2查看 771关注 0票数 0

有人知道如何在play JSON返回结果时指定BigDecimal类型的精度吗?

例如,如果JSON值为100,当play BigDecimal返回JSON值时,我如何显示为100.00?

EN

回答 2

Stack Overflow用户

发布于 2015-12-23 18:36:11

这并不是真正的游戏。Play Json是对Jackson的包装(在我看来是一个很好的包装)。

如果您试图用它来赚钱,我怀疑您确实是这样做的,不要在序列化时应用四舍五入,因为您实际上可能会损失一些钱。在你的模型中这样做!与金钱打交道是另一个话题。

如果这与金钱无关,您可以为该属性应用单独的翻译器。

正如我所说的,适用于Jackson的东西也可以适用于Play JSON。您可以尝试为only.You应该实现您自己的JsonSerializer的属性定义一个序列化程序,并使用@JsonSerialize(using = <YourSerializer>.class)注释您的属性。

票数 0
EN

Stack Overflow用户

发布于 2016-12-12 01:01:55

您只需要为您的对象提供一个writes实现来执行您正在寻找的格式化(舍入),示例如下所示:

代码语言:javascript
复制
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
        )
    }
}

示例:

代码语言:javascript
复制
val t = Thing("some string", 10.123456789)
val j = Json.toJson(t)
println(Json.prettyPrint(j))

输出:

代码语言:javascript
复制
{
  "a" : "some string",
  "b" : 10.12
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34432505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档