假设有如下代码 data class Data( val a: Int, val b: Int=20 ) 其中参数b有个默认值,如果我们定义一个json字符串,假设如下 val json="""{"a":45,"b":60}""" 那么,如果进行反序列化,时成功的 JSON.parseObject(json,Data::class.java) 这行代码能得到正确的结果,b的值是60 但是,假设我们的json字符串如下 val json="""{"a":45}""" 注意,和上面相比,去掉了b这个参数,那么,在没有提供b参数的情况下,我们希望b采用的是默认值,20,但是实际情况是,b的值为0,
如果b的类型比较特殊,比如是时间类型Date,那么就会直接抛出异常了,比如以下代码 data class Data( val a: Int, val b: Date=Date() ) val json="""{"a":45}""" val value = JSON.parseObject(json,Data::class.java) 如果调用,则直接抛出create instance error
Exception in thread "main" com.alibaba.fastjson.JSONException: create instance error, [Ljava.lang.String;@792b749c, public aaaa.Data(int,java.util.Date) at ...........