@JsonValue注解和@JsonCreator注解的使用

Fastxml.jackson提供了JsonValue和JsonCreator注解用于序列化和反序列化时使用.

@JsonValue注解用户get方法或者属性字段上,一个类只能用一个,加上这个注解时,序列化就会只返回这一个字段的值.

比如一个枚举类的get方法上加上该注解:

 

那么在序列化这个枚举类时,输出的对象就是:枚举类中的某个枚举的值,而不是这个枚举

如:

 

如果不加这个注解且没有使用@JsonFormat注解时,经过序列化之后,输出的是这个枚举,如图:

但是在枚举类上使用@JsonFormat注解,并加上类型选择Object,则序列化后会是对应枚举对象.

 

反序列化:将json字符串反序列化为对应的对象.

反序列化的过程:首先会调用反序列化的目标类的无参构造函数,生成一个对象.

其次,在调用类的成员变量的set方法,为该对象的每一个成员变量赋值.

@JsonCreator注解的作用是可以自定义反序列化的过程,这样就可以自定义反序列化函数.该注解可以用在哪些地方?

  1. @JsonCreator注解用在构造方法上
  2. @JsonCreator注解用在工厂的静态方法上

使用这个注解之后,进行反序列化时,默认使用无参构造函数及set方法进行反序列化的过程机会失效.

例如:枚举类中的静态方法使用该注解,在反序列化时,按照静态方法的逻辑进行反序列化.

 

 

 


版权声明:本文为u012913466原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。