我有一些代码在 Playframework 上下文中的 Scala 中构建 JSON 对象
def toJson(): JsObject = Json.obj(
"status" -> JsString(result.getOrElse("fail")),
"age" -> JsNumber(age.getOrElse(0))
)
结果和年龄包含在选项中。年龄行中的 getOrElse 部分表示年龄不可用。这就是我想要解决的问题。
结果输出是:
{
status: "fail",
age: 0
}
问题 A:在示例中,年龄为 None,因此 getOrElse 返回一个 0,客户端必须将其解释为具有特殊含义的某个幻数。我想返回类似 None 的东西,但 play.api.libs.json.JsNumber 需要一个 scala.BigDecimal。
有没有办法以某种方式解决这个问题?
问题 B:问题 A 的一个解决方案是忽略年龄,以防它不可用,因此结果如下所示:
{
status: "fail"
}
我不能在 Json.obj(a, b, ...) 构造中乱来......
那么代码将如何实现这样的目标呢?