簡體   English   中英

Json4s支持具有特質mixin的案例類

[英]Json4s support for case class with trait mixin

我正在嘗試使用帶有jackson支持的json4s序列化scala案例類。 但是對於我試圖混合特征的情況,它無法序列化類。 下面是一個代碼示例。

trait ISearchKey {
    var id:String = ""  
}

當我執行下面的代碼時,我得到空的大括號,沒有值序列化,但如果我刪除特征mixin然后CrystalFieldInfo值被正確序列化

  val fld = new CrystalFieldInfo("Field1") with ISearchKey
  fld.id = "Id1"          
  implicit val formats = Serialization.formats(NoTypeHints)
  val ser = write[CrystalFieldInfo with ISearchKey](fld)
  println(ser)

非常感謝對這個問題的任何見解。 提前致謝

要使Json4s序列化不僅僅是case類成員變量,你需要為你的format變量添加一個FieldSerializer,如下所示:

implicit val formats = DefaultFormats + FieldSerializer[ISearchKey]()
val ser = write[CrystalFieldInfo with ISearchKey]
println(ser) // should include the "id" field from the ISearchKey trait

有關FieldSerializers的更多信息,請訪問: https//github.com/json4s/json4s#serializing-fields-of-a-class

源代碼中還有幾個例子: https//github.com/json4s/json4s/blob/ebc76d70309c79c39df4be65f16b88d208f47055/tests/src/test/scala/org/json4s/native/FieldSerializerExamples.scala

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM