2017-04-06 85 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