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,date=null]
这个时候我们看到没有识别到date,因为我们在date字段的set方法上配置了@JSONField(name = "endDate")所以其在识别的时候,是通过endDate去识别key的,而我们的json数据里根本没有endDate这个key,所以没法识别。 ? 根据上面我们可以总结出一个结论: 1.序列化(JavaBean --> json)时配置到对应字段的get()方法上 2.反序列化(json --> JavaBean)时配置到对应字段的set()方法上 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |