假設我有需要使用瑟茜被序列化爲JSON對象下列情況下類:編碼斯卡拉無以JSON值使用瑟茜
@JsonCodec
case class A(a1: String, a2: Option[String])
@JsonCodec
case class B(b1: Option[A], b2: Option[A], b3: Int)
現在我需要編碼val b = B(None, Some(A("a", Some("aa")), 5)
爲JSON,但我希望能夠來控制其是否作爲
{
"b1": null,
"b2": {
"a1": "a",
"a2": "aa"
},
"b3": 5
}
或
{
"b2": {
"a1": "a",
"a2": "aa"
},
"b3": 5
}
USI輸出例如Printer
的dropNullKeys
配置,例如, b.asJson.noSpaces.copy(dropNullKeys = true)
將導致從輸出省略None
小號而將其設置爲將false
編碼None
S作爲null
(see also this question)。但是,如何以每場爲基礎控制此設置?
謝謝,這對於用例非常有用。實際上,我真正需要的是一種讓庫的用戶能夠控制值是從json'省略'還是序列化爲null的方法。我想我唯一的選擇是創建某種類型的ADT來映射出3種可能的輸出:'None'(省略),'Some(ANullValue)'或'Some(A(...))',然後使用自定義編碼器你建議。 – msilb