java json工具包Jackson的使用

官方的五分鐘入門文檔:java

http://wiki.fasterxml.com/JacksonInFiveMinutes json

國內某位同仁的翻譯版(算是翻譯版吧)
spa

http://shensy.iteye.com/blog/1717776 翻譯

除了這些簡單的應用外,有時還會遇到一些比較特殊的場景code

  1. pojo的字段名與實際的屬性名不同orm

  2. 某些屬性不須要做json轉換xml

  3. 字段以指定的順序顯示blog

  4. 日期類型按指定的格式轉化
    文檔

舉例:字符串

  1. pojo的字段名與實際的屬性名不同

    好比如下實體

public class User {
    private String username;
    private String nickName;
    //真實姓名
    private String fullName;
    .....
}

但要求轉化後的json字符串是這樣的:

{"username":"xxx", "nickName":"xxxx", "realName":"xxxx"}

其中真實姓名這個字段在實體中是叫fullNam,但要求轉後顯示:realName

解決方式:

使用Jackson的註解便可:

public class User {
    private String username;
    private String nickName;
    //真實姓名
    @JsonProperty("realName")
    private String fullName;
    .....
}

2. 某些屬性不須要做json轉換

  好比如下實體

public class User {
    private String username;
    private String nickName;
    //真實姓名
    private String fullName;
    .....
}

但要求轉化後的json字符串是這樣的:

{"username":"xxx", "realName":"xxxx"}

其中nickName這個字段要求不要轉換成json

解決方式:

使用Jackson的註解便可:

public class User {
    private String username;
    @JsonIgnore
    private String nickName;
    //真實姓名
    @JsonProperty("realName")
    private String fullName;
    .....
}

3.字段以指定的順序顯示

  好比如下實體

public class User {
    private String username;
    private String nickName;
    //真實姓名
    private String fullName;
    .....
}

但要求轉化後的json字符串是這樣的:

{"fullName":"xxxx","username":"xxx", "nickName":"xxxx"}

字段顯示的順序爲:fullName,username,nickName

解決方式:

使用Jackson的註解便可:

//調轉順序
@JsonPropertyOrder({ "fullName", "username", "nickName" })
public class User {
    private String username;
    @JsonIgnore
    private String nickName;
    //真實姓名
    @JsonProperty("realName")
    private String fullName;
    .....
}

4.日期類型按指定的格式轉化

  好比如下實體

public static class DateBean {
		public Date startDate;
		public Date endDate;

	}

但要求轉化後的json字符串是這樣的:

{"startDate":"yyyy-MM-dd HH:mm:ss","endDate":"yyyy-MM-dd HH:mm:ss"}

解決方式:

使用Jackson的註解便可:

public static class DateBean {
                //按annotation中的日期格式存儲。
		@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
		public Date startDate;
		//按annotation中的日期格式存儲。
		@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
		public Date endDate;

	}
相關文章
相關標籤/搜索