有人知道如何在play JSON返回结果时指定BigDecimal类型的精度吗?
例如,如果JSON值为100,当play BigDecimal返回JSON值时,我如何显示为100.00?
发布于 2015-12-23 18:36:11
这并不是真正的游戏。Play Json是对Jackson的包装(在我看来是一个很好的包装)。
如果您试图用它来赚钱,我怀疑您确实是这样做的,不要在序列化时应用四舍五入,因为您实际上可能会损失一些钱。在你的模型中这样做!与金钱打交道是另一个话题。
如果这与金钱无关,您可以为该属性应用单独的翻译器。
正如我所说的,适用于Jackson的东西也可以适用于Play JSON。您可以尝试为only.You应该实现您自己的JsonSerializer的属性定义一个序列化程序,并使用@JsonSerialize(using = <YourSerializer>.class)注释您的属性。
发布于 2016-12-12 01:01:55
您只需要为您的对象提供一个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
}https://stackoverflow.com/questions/34432505
复制相似问题