@JSONField可以配置到字段和方法上,那不同的配置有什么不同呢?下面我们就来看看具体配置到不同的方法上。

我们在创建实体类的时候,都要求属性必须创建get和set方法,否则fastjson将不会进行识别,下面我们看看把@JSONField配置到具体的get和set方法上

/**
* @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

我们再来看看下面的代码看看结果跟上面做个比较:

// 反序列化
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()方法上

最新文章

  1. 如何快速上手使用STM32库函数
  2. c#委托、事件、Observer
  3. 编译安装的 mysql apache 用 service mysqld start 来启动
  4. [推荐]Hadoop+HBase+Zookeeper集群的配置
  5. 好用的shell命令行: fish的配置
  6. 解决Android singleTask模式下PendingIntent不能给onNewIntent传值的Bug
  7. C++对象内存模型2 (虚函数,虚指针,虚函数表)
  8. Ubuntu 12.04 搭建Android开发环境
  9. SPOJ375(树链剖分)
  10. Java面试01|JVM相关
  11. Python Learning - One
  12. table的thead,tbody,tfoot
  13. loadrunner11 下载路径+安装+破解+汉化
  14. 【bzoj4631】踩气球 线段树
  15. Sybase SQL anywhere5.5
  16. CSS中的行内元素和块级元素
  17. Android学习之基础知识十五 — 最佳UI体验(Material Design实战)
  18. PHP代码审计笔记--文件包含漏洞
  19. node包管理工具--nvm(windows)
  20. Shell获取文件的文件名和扩展名的例子

热门文章

  1. 使用抽象工厂反射获取不到Dal层对象,未能加载文件或程序集......
  2. jmh源码解析-整体架构
  3. collection介绍
  4. Oracle中的日期函数
  5. SpingBoot:整合Elasticsearch7.2.0
  6. shift键复选dataGrid的记录时多余的文本总被选择了。
  7. AI资源对接需求汇总:第3期
  8. vux-scroller实现移动端上拉加载功能
  9. python大纲+变量基础详解
  10. 逆向破解之160个CrackMe —— 026