fastjson使用 -- @JSONField使用
2016-05-28 23:31
549 查看
<span style="font-family: Arial; background-color: rgb(255, 255, 255);">我们在创建实体类的时候,都要求属性必须创建get和set方法,否则fastjson将不会进行识别,下面我们看看把@JSONField配置到具体的get和set方法上</span>
/**
* @Title: getDate
* @Description: 配置序列化的时候,日期序列化为startDate
* @return Date
*/
@JSONField(name = "startDate")
public Date getDate() {
return date;
}
/**
* @Title: setDate
* @Description: 配置反序列化的时候,以endDate去匹配
* @param date
* @return void
*/
@JSONField(name = "endDate")
public void setDate(Date date) {
this.date = date;
}
/**
* @Title: getId
* @Description: 配置序列化的时候,不序列化id
* @return int
*/
@JSONField(serialize = false)
public int getId() {
return id;
}
/**
* @Title: setId
* @Description: 配置反序列化的时候,不反序列化id
* @return void
*/
@JSONField(deserialize = false)
public void setId(int id) {
this.id = id;
}
具体的代码,就是上面的,挺简单的。下面来看看结果:
{"age":25,"name":"LiLei","sex":"男","startDate":1451985134688}
User [id=0, name=LiLei, age=25, sex=男, date=Tue Jan 05 17:04:47 CST 2016]
我们看到id既没有序列化也没有反序列化,date字段序列化的时候变为了startDate
我们再来看看下面的代码看看结果跟上面做个比较:
再来看看结果:
User [id=0, name=LiLei, age=25, sex=男, date=null] 这个时候我们看到没有识别到date,因为我们在date字段的set方法上配置了@JSONField(name
= "endDate")所以其在识别的时候,是通过endDate去识别key的,而我们的json数据里根本没有endDate这个key,所以没法识别。
根据上面我们可以总结出一个结论:
1.序列化(JavaBean --> json)时配置到对应字段的get()方法上
2.反序列化(json --> JavaBean)时配置到对应字段的set()方法上
<span style="font-family: Arial; background-color: rgb(255, 255, 255);"> </span>
/**
* @Title: getDate
* @Description: 配置序列化的时候,日期序列化为startDate
* @return Date
*/
@JSONField(name = "startDate")
public Date getDate() {
return date;
}
/**
* @Title: setDate
* @Description: 配置反序列化的时候,以endDate去匹配
* @param date
* @return void
*/
@JSONField(name = "endDate")
public void setDate(Date date) {
this.date = date;
}
/**
* @Title: getId
* @Description: 配置序列化的时候,不序列化id
* @return int
*/
@JSONField(serialize = false)
public int getId() {
return id;
}
/**
* @Title: setId
* @Description: 配置反序列化的时候,不反序列化id
* @return void
*/
@JSONField(deserialize = false)
public void setId(int id) {
this.id = id;
}
// 序列化 Uo2 u = new Uo2(); u.setId(1); u.setName("LiLei"); u.setAge(25); u.setDate(new Date()); u.setSex("男"); // @JSONField配置了,不序列化id,date序列化为startDate System.out.println(JSON.toJSONString(u)); // 反序列化 String jsonStr = "{\"id\":10,\"age\":25,\"name\":\"LiLei\",\"sex\":\"男\",\"endDate\":1451984687404}"; // @JSONField配置了,不反序列化id,date的匹配name为endDate Uo2 uo = JSON.parseObject(jsonStr, Uo2.class); System.out.println(uo.toString());
具体的代码,就是上面的,挺简单的。下面来看看结果:
{"age":25,"name":"LiLei","sex":"男","startDate":1451985134688}
User [id=0, name=LiLei, age=25, sex=男, date=Tue Jan 05 17:04:47 CST 2016]
我们看到id既没有序列化也没有反序列化,date字段序列化的时候变为了startDate
我们再来看看下面的代码看看结果跟上面做个比较:
// 反序列化 String jsonStr = "{\"id\":10,\"age\":25,\"name\":\"LiLei\",\"sex\":\"男\",\"startDate\":1451984687404}"; // @JSONField配置了,不反序列化id,date的匹配name为endDate Uo2 uo = JSON.parseObject(jsonStr, Uo2.class); System.out.println(uo.toString());
再来看看结果:
User [id=0, name=LiLei, age=25, sex=男, date=null] 这个时候我们看到没有识别到date,因为我们在date字段的set方法上配置了@JSONField(name
= "endDate")所以其在识别的时候,是通过endDate去识别key的,而我们的json数据里根本没有endDate这个key,所以没法识别。
根据上面我们可以总结出一个结论:
1.序列化(JavaBean --> json)时配置到对应字段的get()方法上
2.反序列化(json --> JavaBean)时配置到对应字段的set()方法上
相关文章推荐
- JavaScript中变量的定义方式
- grunt使用小记
- 【小工具】用js自动生成pdf目录索引
- JavaScript框架思想2
- js 创建条形图
- JavaScript的RegExp类型总结
- JSP 问题总结
- JavaScript 小函数积累及性能优化
- 《JavaScript学习笔记三》if else及function的使用
- javascript中function的call()函数的使用-----替换当前函数中的当前对象
- jsp和html的区别是什么
- JavaScript公有、私有以及受保护的属性和方法
- 解决fastjson内存对象重复/循环引用json错误
- 如何设计一个数据字典
- 面向对象的Javascript(5):继承
- 面向对象的Javascript(4):重载
- 面向对象的JavaScript(3):私有成员和公开成员
- html5本地存储localStorage 存储json对象存储格式问题
- 面向对象的JavaScript(2):类
- 面向对象的JavaScript(一)命名空间