我正在将REST API移植到scala,使用带有Spray-json的akka-http。
旧API的响应如下:
{
"result": { ... },
"error": null
}
现在,我想保持精确的向后兼容性,因此当没有错误时,我需要带有error
值的null
键。
但是我在Spray-json中看不到对此的任何支持。当我用None
错误序列化以下内容时:
case class Response(result: Result, error: Option[Error])
我最终得到
{
"result": { ... }
}
并且它完全删除了错误值
[NullOption
特性应序列化null
NullOption
特征为可选的案例类成员。通常,可选成员是未定义(NullOptions
)不会被渲染。通过将这种特性混入您的自定义None
您可以强制执行未定义的呈现成员为JsonProtocol
。
例如
null