fastjson @JSONField
此文来源于:https://blog.51cto.com/xiaok007/2164029 1.作用在FIELD(成员变量上) 注意:1、若属性是私有的,必须有set*方法。否则无法反序列化。 package com.zhujie; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.annotation.JSONField; public class User { @JSONField(name="new_username") private String username; @JSONField(name="new_password") private String password; ... @Override public String toString() { // TODO Auto-generated method stub return JSONObject.toJSONString(this); } public static void main(String[] args) { User user = new User(); user.setUsername("lili"); user.setPassword("123456"); String jsonStr = JSONObject.toJSONString(user); System.out.println("bean to json:"+jsonStr); User user1 = JSONObject.toJavaObject(JSONObject.parseObject(jsonStr), User.class); System.out.println("json to bean:"+user1.toString()); } } 输出结果是: bean to json:{"new_password":"123456","new_username":"lili"} json to bean:{"new_password":"123456","new_username":"lili"} 通过上面的例子可以看出@JSONField注解可以改变序列化和反序列化字段的名称。 2.注解作用在set、get方法之上 @JSONField(name="new_username") public String getUsername() { return username; } @JSONField(name="new_username") public void setUsername(String username) { this.username = username; } 注解作用在方法之上序列化和反序列化生成的对象的字段名称都是new_username,可以改变字段的名称,跟上面直接注解到属性上是一样的效果。 3.注解中的serialize、deserialize用法 翻看源码可以看到serialize、deserialize的默认值都是true,也就是说默认情况下(即使不设置serialize、deserialize属性)是允许对象序列化和反序列化的。 @JSONField(name="new_password", serialize=false, deserialize=false) private String password; 4.注解中的format用法 源码中format属性的默认值是“”空字符串,我所了解到的是用在日期属性上的格式化,如果有其它的用法可以相互交流学习。 @JSONField(format="yyyy-MM-dd HH:mm:ss") private Date currentDate; 5.注解中的serialzeFeatures、parseFeatures属性可以控制序列化的一些规则。 通常情况下如果一个 字段的属性值为null时序列化或者反序列化的时候是不会将该字段输出的; 那么我们有没有办法来控制呢? 答案是可以的; 我们可以通过serialzeFeatures、parseFeatures的属性值SerializerFeature.WriteMapNullValue来控制,当属性的值为null时也输出该字段,字段的值为null。 @JSONField(format="yyyy-MM-dd HH:mm:ss", serialzeFeatures=SerializerFeature.WriteMapNullValue) private Date currentDate; 当然SerializerFeature类中还有很多其他的属性,我会在接下来的章节中讲解。 6.使用ordinal指定字段顺序 缺省fastjson序列化一个java bean,是根据fieldName的字母序进行序列化的,你可以通过ordinal指定字段的顺序。这个特性需要1.1.42以上版本。 @JSONField(ordinal =2) private String username; @JSONField(ordinal =3) private String password; @JSONField(ordinal =1) private Date currentDate;
fastjson @JSONField的更多相关文章
- Springboot使用alibaba的fastJson,@JSONField不起作用的问题
在Springboot中默认的JSON解析框架是jackson 今天引入alibaba的fastjson,使用@JSONField(serialize=false),让@RestController转 ...
- FastJSON基础
对象的类型 json文本 json数组 json对象 java对象 类型的转换 json文本 转 json对象 JSON.parseObject(str) json文本 ...
- 【技术累积】【点】【java】【27】@JSONField
@JSONField 该注解隶属于阿里fastjson,方便fastjson处理对象时的一些操作 源码 @Retention(RetentionPolicy.RUNTIME) @Target({ El ...
- Jackson替换fastjson
为什么要替换fastjson 工程里大量使用了fastjson作为序列化和反序列化框架,甚至ORM在处理部分字段也依赖fastjson进行序列化和反序列化.那么作为大量使用的基础框架,为什么还要进行替 ...
- FastJson的使用心得
本文为早前整理,参考文献已找不到,如有侵权请与我联系,添加参考链接. 一丶基本使用 1.1主要API fastjson入口类是com.alibaba.fastjson.JSON,主要的API是JS ...
- 无法访问com.alibaba.fastjson.parser.deserializer.PropertyProcessable
某项目加入了某依赖A,IDEA里编译报了如下错误: 无法访问com.alibaba.fastjson.parser.deserializer.PropertyProcessable 错误代码行为某个使 ...
- 工具类-Fastjson入门使用
简介 什么是Fastjson? fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到Java ...
- jackson JsonPropertyOrder和@JsonIgnoreProperties注解
有些时候,我们在和外部系统交互的时候使用了json作为标准的数据交换格式,同时为了安全性考虑,增加了对报文的校验,因此我们需要确保序列化的时候参数有序且不多不少刚好,因为对外的API不像后台和前端交互 ...
- FastJson中@JSONField注解使用
最近做项目中,使用了json格式在服务器之间进行数据传输.但是发现json格式数据不符合JAVA中的变量定义规则,并且难以理解,因此需要在后台中做二次处理,将数据处理成我们系统中定义的格式. 思路: ...
随机推荐
- Maven工程构建
Maven 相关术语: 本地资源库:用来存储项目的依赖库,默认的文件夹是 “.m2” 目录 中央存储库: 用来下载所有项目的依赖库的默认位置 Maven pom.xml: 项目对象模型(Project ...
- safari兼容时间格式 NAN
问题: safari中不支持2018-08-01这种格式转为时间戳会显示NaN 方案: new Date('2018/08/01').getTime() 将-转化为/ // 正则替换 new Date ...
- net core 返回值
//指定类下的子类 Type helloType = typeof(ActionResult); List<Type> types = new List<Type>(); fo ...
- POJ 3180 牛围着池塘跳舞 强连通分量裸题
题意:一群牛被有向的绳子拴起来,如果有一些牛(>=2)的绳子是同向的,他们就能跳跃.求能够跳跃的组数. #include <iostream> #include <cstdio ...
- TTTTTTTTTTTTT LA 2191 树状数组 稍修改
题意:给出n个数字,操作有修改(S)和输出区间和(M). #include <iostream> #include <cstdio> #include <cstring& ...
- 【bzoj4562】[Haoi2016]食物链
*题目描述: 如图所示为某生态系统的食物网示意图,据图回答第1小题 现在给你n个物种和m条能量流动关系,求其中的食物链条数. 物种的名称为从1到n编号 M条能量流动关系形如 a1 b1 a2 b2 a ...
- (58)PHP开发
LAMP 0.使用include和require命令来包含外部PHP文件. 使用include_once命令,但是include和include_once命令相比的不足就是这两个命令并不关心请求的文件 ...
- I/O 多路复用的特点:
I/O 多路复用是通过一种机制使一个进程能同时等待多个文件描述符(fd),而这些文件描述符(套接字描述符)其中的任意一个进入读就绪状态,epoll()函数就可以返回. 所以, IO多路复用,本质上不会 ...
- 微信小程序 API 网络(ajax)
网络 API 类似于 ajax 向服务器请求网络地址,唯一不同的是这个请求有很多的规则,且必须向服务器上请求,不能在本地请求 网络 发送请求: wx.request() 发起https网络请求 参数: ...
- c++11多线程---线程操作
1.等待线程执行完成 join() 方法数会阻塞主线程直到目标线程调用完毕,即join会直接执行该子线程的函数体部分. 2.暂停线程(线程休眠) 使用std::this_thread::sleep_f ...