jackson 常用注解,比如忽略某些属性,驼峰和下划线互转

时间:2023-01-02 16:41:08

一般情况下使用JSON只使用了java对象与字符串的转换,但是,开发APP时候,我们经常使用实体类来做转换;这样,就需要用到注解;
Jackson默认是针对get方法来生成JSON字符串的,可以使用注解来做一些特殊用途;常见的使用如下:
1 排除属性
@JsonIgnore,一般标记在属性或方法上;作用于序列化与反序列化,在pure pojo中使用的比较少,但是在某些富pojo中,比如说由于缓存考虑,我们可能设置了一个接口,其中有个接口方法叫做getKey,此时默认的序列化/反序列化就会导致key找不到。

2 属性别名
@JsonProperty,序列化/反序列化都有效,早期版本一般用于pojo和mybatis mapper之间在驼峰式和下划线之间转换,在mybatis 3中,已经内置了该规则,可参见http://www.cnblogs.com/zhjh256/p/5814414.html;

3 属性排序
@JsonPropertyOrder,注释在类声明中;这个注解在某些对性能有极端要求且灵活性要求不是那么高场景中,可以一定程度上提升性能。

4 属性格式转换
使用自定义序列化/反序列化来处理;
@JsonSerialize,序列化;
@JsonDeserialize,反序列化;

不过,默认情况下,jackson是不处理注解的,需调用objectMapper.setAnnotationIntrospector(new JacksonAnnotationIntrospector());

需要注意的是:1.9之前仅根据语法确定有效或无效,1.9之后根据javabean的规范确定生效的getter/setter和属性。