fastjson使用-- @JSONField使用(转)

@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()方法上

原文地址:https://www.cnblogs.com/heqiyoujing/p/9459702.html

时间: 2024-10-13 19:14:22

fastjson使用-- @JSONField使用(转)的相关文章

fastJson注解@JSONField使用的一个实例

1.实体类 package jsonArrayjsonObject.cn; import java.io.Serializable; import java.util.Date; import com.alibaba.fastjson.annotation.JSONField; import com.alibaba.fastjson.serializer.SerializerFeature; public class User implements Serializable{ private s

fastjson的@JSONField注解

@JSONField作用:在字段和方法上1.Field:@JSONField作用在Field时,name可以定义输入key的名字,反序列化的时 值不会赋值到属性上2.作用在setter和getter方法上 /** * bean 转json 时会把bean中的name转换为project_name * */ @JSONField(name="project_name") public String getName() { return name; } /** * son 转bean 时会

fastjson简单使用demo,@JSONField注解属性字段上与set、get方法上。实体类toString(),实体类转json的区别;_下划线识别

一.demo代码 @JSONField注解属性字段上与set.get方法上.使用@Data注解(lombok插件安装最下方),对属性“笔名”[pseudonym]手动重写setter/getter方法 import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.annotation.JSONField; import lombok.Data; @Data

spring boot (二):使用fastJson解析json数据

如果我们想在spring boot中使用第三方的json解析框架: 1)我们需要在pom.xml文件中引入第三方包的依赖; 2)实现方法: 方法1 需要在启动类中继承WebMvcConfigurerAdapter 类,并重写该类的configureMessageConverters方法. 方法2. 我们直接使用@Bean注入第三方的 解析框架. 1.引入fastJson的依赖库 <dependency> <groupId>com.alibaba</groupId> &l

alibaba fastjson常见问题FAQ

English | 中文 1. 怎么获得fastjson? 你可以通过如下地方下载fastjson: maven中央仓库: http://central.maven.org/maven2/com/alibaba/fastjson/ Sourceforge.net : https://sourceforge.net/projects/fastjson/files/ 在maven中如何配置fastjson依赖 fastjson最新版本都会发布到maven中央仓库,你可以直接依赖. <dependen

FastJson转换自定义枚举类

在项目中有些状态需要采用枚举类型,在数据库中保存的是name(英文),而前台需要显示的是text(中文). 所以这就需要自己去实现序列. 例如对象: import java.util.Date; import java.util.List; import com.alibaba.fastjson.annotation.JSONField; public class Project { /** * * 审核状态 */ @JSONField(name = "auditStatus") pr

[转]fastjson常见问题

转自fastjson wiki说明文档:https://github.com/alibaba/fastjson/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98 1. 怎么获得fastjson? 你可以通过如下地方下载fastjson: maven中央仓库: http://central.maven.org/maven2/com/alibaba/fastjson/ Sourceforge.net : https://sourceforge.net/project

Spring MVC+Fastjson之时间类型序列化

时间类型序列化: 注意红色代码,必须引入fastjson的JSONField类,而非其它. import com.alibaba.fastjson.annotation.JSONField; @Entity @Table(name="User") public class User{ @Id @Column(name = "id") @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id

FastJson常见问题

1. 怎么获得fastjson? 你可以通过如下地方下载fastjson: maven中央仓库: http://central.maven.org/maven2/com/alibaba/fastjson/ Sourceforge.net : https://sourceforge.net/projects/fastjson/files/ 在maven中如何配置fastjson依赖 fastjson最新版本都会发布到maven中央仓库,你可以直接依赖. <dependency> <grou