【发布时间】:2018-07-17 16:20:06
【问题描述】:
我从外部服务接收 JSON,我的目标是完全按原样解析它。
主要问题是:一个值可以为空,也可以不存在,但null 具有不同的不存在含义。所以我想以某种方式抓住这个。
例如这个 JSON:
{
"a": null,
"b": 1
}
与这个不同:
{
"b": 1
}
你能帮帮我吗?
更新:
抱歉更新延迟。无论如何:你是对的,我在中间有一个隐式的自定义读取,目前我使用 "a".readNullable[Double] 和 "a".write[Option[Double]] 并且案例类类似于:
case class Example(a: Option[Double])
【问题讨论】:
-
你想捕捉这种差异是什么意思? val json = Json.parse("""{"a": null, "b": 1}""") 不同于 val json = Json.parse("""{"b": 1}""" )
-
抱歉,可能是我忘记添加重要的部分了。我有一个隐式读取(readNullable)和一个隐式写入(writeNullable)。
-
对...所以你有这样的案例类
case class Yolo(a: Option[Int], b: Int)? -
看看这里 playframework.com/documentation/2.6.x/… 它说对可能丢失或为空的路径使用 readNullable
-
正如@mfirry 提到的,
Json.parse已经捕捉到了差异。如果您在此过程的后期遇到问题(可能是 as[...] 或 validate[..]?),请发布给您带来问题的实际代码。
标签: json scala parsing playframework null