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;

	}


转载于:https://my.oschina.net/u/914897/blog/377179

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值