@JSONField可以放在字段和方法中,但不同的放置有什么不同呢? 那么,让我们具体来看一下配置成不同的方法吧。
创建实体类时,必须在属性中创建get和set方法。 如果不创建,fastjson将无法识别。 让我们看看如何在具体的get和set方法中放置@JSONField
/*** @Title: getDate
* @Description:配置序列化后,日期将序列化为startDate
* @ return date */@ JSON field (name=' start date ' ) publicDate getDate ) {returndate;
(}/*** @Title: setDate
* @Description:配置反序列化时,用endDate进行匹配
*@paramdate
* @ return void */@ JSON field (name=' end date ' )公共void set date ) {this.date=date;
(}/*** @Title: getId
* @Description:配置序列化时未序列化的id
* @ return int */@ JSON field (串行=假)公共int getid ) {returnid;
(}/*** @Title: setId
* @Description:配置反向序列化时,id不会反向序列化
* @ return void */@ JSON field (deserialize=false ) public void setid (intid ) {this.id=id;
}
具体代码是上面的,很简单。 让我们来看看结果:
{'age':25,' name':'LiLei ',' sex': '男',' startDate':1451985134688}
User [id=0,name=LiLei,age=25,sex=男人,date=tue Jan 0517336004336047 CST 2016
可以看到,id既没有序列化也没有反序列化,date字段序列化时为startDate
看看下面的代码。 把结果和上面比较一下。
//反序列化
String jsonStr='{'id':10,'age':25,'name':'LiLei', ' sex' 3333323336523232323652306; date的一致name是结束日期
UO2uo=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 .序列化----JSON时对应字段的get ) )方法中
2 .在反序列化(json -- JavaBean )时将其放置在对应字段的set )方法中