All Downloads are FREE. Search and download functionalities are using the official Maven repository.

jacks.option.scala Maven / Gradle / Ivy

The newest version!
// Copyright (C) 2011 - Will Glozer.  All rights reserved.

package com.lambdaworks.jacks

import com.fasterxml.jackson.core._
import com.fasterxml.jackson.databind._
import com.fasterxml.jackson.databind.ser.std.StdSerializer

class OptionSerializer(t: JavaType) extends StdSerializer[Option[_]](t) {
  override def serialize(value: Option[_], g: JsonGenerator, p: SerializerProvider) {
    value match {
      case Some(v) =>
        val a = v.asInstanceOf[AnyRef]
        val s = p.findValueSerializer(a.getClass, null)
        s.serialize(a, g, p)
      case None =>
        p.defaultSerializeNull(g)
    }
  }

  override def isEmpty(v: Option[_]) = v.isEmpty
}

class OptionDeserializer(t: JavaType) extends JsonDeserializer[Option[_]] {
  override def deserialize(p: JsonParser, ctx: DeserializationContext): Option[_] = {
    val d = ctx.findContextualValueDeserializer(t, null)
    Some(d.deserialize(p, ctx))
  }

  override def getNullValue = None
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy