jackson-module-scala
jackson-module-scala copied to clipboard
Integer runtime value in a collection typed as Double
Easily reproducible :
import com.fasterxml.jackson.annotation.JsonInclude
import com.fasterxml.jackson.core.util.{DefaultPrettyPrinter, MinimalPrettyPrinter}
import com.fasterxml.jackson.databind.ObjectMapper
import com.fasterxml.jackson.module.scala.DefaultScalaModule
import com.fasterxml.jackson.module.scala.experimental.ScalaObjectMapper
object ObjMapper extends ObjectMapper with ScalaObjectMapper {
setSerializationInclusion(JsonInclude.Include.NON_NULL)
registerModule(DefaultScalaModule)
val prettyWriter = writer(new DefaultPrettyPrinter)
val miniWriter = writer(new MinimalPrettyPrinter)
}
case class Foo(timestamp: String, result: Map[String, Double])
class PLAY extends BaseSuite {
"succeeds" in {
val json =
"""
|[ {
| "count" : 10800
| }
|]
""".stripMargin
val map = ObjMapper.readValue[List[Map[String,Double]]](json).head
assert(map("count").isInstanceOf[Double])
}
"fails" in {
val json =
"""
|{
| "timestamp" : "2015-01-01T00:00:00.000Z",
| "result" : {
| "count" : 10800
| }
|}
""".stripMargin
val map = ObjMapper.readValue[Foo](json).result
assert(map("count").isInstanceOf[Double])
}
}
Is this issue scheduled to be fixed?
I've also run into this one - might take a crack at resolving it when I have the time.
This is covered in the FAQ
https://github.com/pjfanning/jackson-scala-reflect-extensions may be an option for people running in this issue.