有一个带有默认参数的案例类 Person 。
向映射器传递一个缺少参数的字符串,映射器将其设置为空。
期望它设置默认值
为什么是这样 ?
例子 :
@JsonIgnoreProperties(ignoreUnknown = true)
case class Person(id:Int,name:String="")
class MapperTest extends SpecificationWithJUnit {
"Mapper" should {
"use default param" in {
val personWithNoNameString = """{"id":1}"""
val mapper = new ObjectMapper();
mapper.registerModule(DefaultScalaModule)
val personWithNoName = mapper.readValue(personWithNoNameString,classOf[Person])
personWithNoName.name must be("")
}
}
}
得到错误:
'null' is not the same as ''
java.lang.Exception: 'null' is not the same as ''
请您参考如下方法:
Jackson 映射器使用反射来设置属性并忽略案例类构造函数中的默认值。
有一个开放ticket ,看来评论中建议的解决方案不起作用
case class Person(id:Int,name:String=""){
def this() = this(0,"")
}




