java json工具包Jackson的使用

官方的五分钟入门文档:

http://wiki.fasterxml.com/JacksonInFiveMinutes

国内某位同仁的翻译版(算是翻译版吧)

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

除了这些简单的应用外,有时还会遇到一些比较特殊的场景

  1. pojo的字段名与实际的属性名不一样

  2. 某些属性不需要作json转换

  3. 字段以指定的顺序显示

  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;

	}


你可能感兴趣的:(java,json)