有一个带有默认参数的案例类 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,"") 
} 


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!