一般情況下使用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和屬性。