使用jackson反序列化时如何识别具有默认值的字段

时间:2014-07-24 11:26:29

标签: java json serialization jackson

我有一个类Person,我想使用jackson从JSON反序列化POJO。现在, Person类的定义类似于:

class Person {
   int id;
   String name;
   boolean isOldAge;
   boolean hasSenseOfHumor;
   .
   .
   .
}

现在我的json就像:

   {
   "id" : 1,
   "isOldAge" : false
   }

现在,当我将其反序列化为POJO时,我将得到的值是:

[id=1,name="",isOldAge=false,hasSenseOfHumor=false]

,即json中未提及的属性将被赋予其默认值。

所以我的问题就在这里。有没有一种方法可以区分isOldAgehasSenseOfHumor,无论是否由用户提及或提供。

1 个答案:

答案 0 :(得分:0)

尝试将原始boolean更改为装箱Boolean类型。这些字段应该用null值初始化。

如果你不能改变类的字段类型,那么可以提前读取你的JSON作为映射,如下mapper.readValue(JSON, Map.class),然后推断出结果映射实例中是否存在布尔字段。