2017-04-06 60 views
3
我使用阶2.11.8与瑟茜

0.7.0忽略无场而编码与瑟茜JSON斯卡拉

我使用scalajs与API在发送的JSON微分不存在的字段和null场通信。

我找编码的方式到JSON斯卡拉case classOption[T]领域,我将设置为None表示缺少值:

case class Foo(
optionalFieldOne: Option[Int] = 42, 
optionalFieldTwo: Option[Int] = null, 
optionalFieldThree: Option[Int] = None 
) 

implicit FooEncoder: Encoder[Foo] = deriveEncoder[Foo] 
val test = Foo() 
//What the code actually produces 
val.asJson.noSpace 
//>{"optionalFieldOne": 42,"optionalFieldTwo":null, "optionalFieldThree":null} 

//What I would like 
val.asJson.noSpace 
//>{"optionalFieldOne": 42,"optionalFieldTwo":null} 

是否存在被瑟茜提供任何配置可以吗?你有任何想法如何访问它,我已经浏览了所有发行说明,github问题和他们的网站文档没有成功。

在这种配置选项不可用的情况下,如何正确实施它?

回答

2

使用dropNullKeys

@param dropNullKeys确定是否与空值的对象字段从输出下降。

+0

这里的问题是,我想保留空值,只有ommit设置为None的字段。这里你的解决方案会返回'{“optionalFieldOne”:42}'。第二个领域缺失。我已在[link](https://github.com/circe/circe/issues/585) – amougel

+1

http://stackoverflow.com/a/42370819/2311362中阅读过此解决方案? – OlivierBlanvillain