Deserialization of case object in Scala with JSON4S

后端 未结 2 538
谎友^
谎友^ 2020-12-19 02:55

I have some case classes defined like follows:

sealed trait Breed
case object Beagle extends Breed
case object Mastiff extends Breed
case object Yorkie exten         


        
2条回答
  •  轮回少年
    2020-12-19 03:25

    You need to write the serializer like below:

    Serializer:

    case object BreedSerializer extends CustomSerializer[Breed](format => (
        {
          case JString(breed) =>  breed match {
            case "Beagle" => Beagle
            case "Mastiff" => Mastiff
            case "Yorkie" => Yorkie
          }
          case JNull => null
        },
        {
          case breed:Breed => JString(breed.getClass.getSimpleName.replace("$",""))
        }))
    

    Now, you will have to add this serialiser to the default formats.

    import org.json4s.CustomSerializer
    val serializers = List(BreedSerializer)
    implicit lazy val serializerFormats: Formats = DefaultFormats ++ serializers
    

    Hope this solves your problem.

提交回复
热议问题