如何在 Scala 中使用 play.api.libs.json 库强制将数字字段解析为 Double,即使它是 Int

How to force number field to be parsed as Double even if it is Int using play.api.libs.json library in Scala

Bellow 是 Scala REPL 的片段,我如何制作一个 json 像 {"a":2.0}

scala> val f = 2.0
f: Double = 2.0

scala> f
res2: Double = 2.0

scala> val x = play.api.libs.json.Json.obj("a" -> f)
x: play.api.libs.json.JsObject = {"a":2}

Play JSON library 中,您有以下 JSON 类型:

  • JsString
  • JsNumber
  • Js布尔值
  • JsObject
  • JsArray
  • JsNull

对应JSON类型。 它将您的值包装成 JsNumber 类型。 如果你用同样的方式保存 val f = 2.1 你会收到 x: play.api.libs.json.JsObject = {"a":2.1}。 JsNumbers 的行为类似于 JavaScript 数字,因此您不必担心末尾缺少零。在 JavaScript 22.0 中是相同的数字。