【发布时间】:2015-03-19 07:10:41
【问题描述】:
我正在将 json 反序列化为 scala 中的一个类。 如果该类有一个在 json 中不存在的成员,我希望它获得在主构造函数中分配的默认值,但事实并非如此。
在下面的例子中,我怎样才能让 prop2 成为一个空字符串(现在它是空的)。
import com.fasterxml.jackson.databind.{DeserializationFeature, ObjectMapper}
import com.fasterxml.jackson.module.scala.DefaultScalaModule
import com.fasterxml.jackson.module.scala.experimental.ScalaObjectMapper
case class Thing(var prop1 : String = "",
var prop2 : String = "",
var prop3 : String = "")
object test {
val mapper = new ObjectMapper() with ScalaObjectMapper
mapper.registerModule(DefaultScalaModule)
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
def main(args: Array[String]): Unit = {
val thingStr = """{"prop1":"val1","prop3":"val3"}"""
val thing = mapper.readValue[Thing](thingStr)
System.out.println(thing)
}
}
上面的代码打印出来
Thing(val1,null,val3)
如何让 prop2 为空字符串?
【问题讨论】:
-
我不认为这是一个scala问题,我猜这是杰克逊的默认行为。如果是这种情况,您可能需要定义一个自定义对象映射器。