bugfix/added the JavaMathBigDecimalSerializer

This commit is contained in:
hongwei 2023-02-20 22:04:49 +01:00
parent 7a17bb604a
commit 8c62fa3978

View File

@ -42,7 +42,7 @@ object JsonSerializers {
BigDecimalSerializer :: StringDeserializer ::
FiledRenameSerializer :: EnumValueSerializer ::
JsonAbleSerializer :: ListResultSerializer.asInstanceOf[Serializer[_]] :: // here must do class cast, or it cause compile error, looks like a bug of scala.
MapperSerializer :: Nil
MapperSerializer :: JavaMathBigDecimalSerializer :: Nil
implicit val commonFormats = CustomFormats ++ serializers
@ -130,6 +130,20 @@ object BigDecimalSerializer extends Serializer[BigDecimal] {
case x: BigDecimal => JString(x.toString())
}
}
object JavaMathBigDecimalSerializer extends Serializer[java.math.BigDecimal] {
private val IntervalClass = classOf[java.math.BigDecimal]
override def deserialize(implicit format: Formats): PartialFunction[(TypeInfo, JValue), java.math.BigDecimal] = {
case (TypeInfo(IntervalClass, _), json) => json match {
case JString(s) => BigDecimal(s).bigDecimal
case x => throw new MappingException("Can't convert " + x + " to BigDecimal")
}
}
override def serialize(implicit format: Formats): PartialFunction[Any, JValue] = {
case x: java.math.BigDecimal => JString(x.toString())
}
}
object StringDeserializer extends ObpDeSerializer[String] {
private val IntervalClass = classOf[String]