一眼看清@JSONField注解使用与效果
@JSONField是做什么用的
@JSONField是fastjson的一个注解,在fastjson解析一个类为Json对象时,作用到类的每一个属性(field)上。
通过用@JSONField注解一个类的属性,我们可以达到以下目标
- 指定field对应的key名称:@JSONField(name = “NaMe”)
- 对于时间字段,指定其格式:@JSONField(format = “yyyy-MM-dd HH:mm:ss”)
- 不序列化某些字段:@JSONField(serialize = false)
- 指定顺序:@JSONField(ordinal = 1)
- 当然,以上注解里的属性,可以同时使用:@JSONField(name = “nAmE”, format = “yyyy-MM-dd HH:mm”)
上demo
我们直接用demo代码来简单清晰的看一下,加了这些注解的效果吧!
我们来定义三个类,这三个类字段一毛一样,只是注解不同。
一个订单实体
/*** 一个订单实体** @author xiaobai* @date 2020/11/14*/
@Data
@Builder
public class Order {/*** 主键id*/long id;/*** 订单编码*/String code;/*** 订单标题*/String title;/*** 订单价格*/double price;/*** 订单类型*/int orderType;/*** 订单创建时间*/Date ctime;/*** 订单支付时间*/Date payTime;
}
一个有注解的订单实体
/*** 一个有注解的订单实体** @author xiaobai* @date 2020/11/14*/
@Data
@Builder
public class OrderWithAnnotation {/*** 主键id*/@JSONField(serialize = false)long id;/*** 订单编码*/String code;/*** 订单标题*/String title;/*** 订单价格*/double price;/*** 订单类型*/@JSONField(name = "order_type")int orderType;/*** 订单创建时间*/@JSONField(format = "yyyy-MM-dd HH:mm:ss")Date ctime;/*** 订单支付时间*/@JSONField(name = "pay_time", format = "yyyy-MM-dd HH:mm")Date payTime;
}
一个只有顺序注解的订单实体
/*** 一个只有顺序注解的订单实体** @author xiaobai* @date 2020/11/14*/
@Data
@Builder
public class OrderWithOrdinal {/*** 主键id*/@JSONField(ordinal = 9)long id;/*** 订单编码*/@JSONField(ordinal = 9)String code;/*** 订单标题*/@JSONField(ordinal = 1)String title;/*** 订单价格*/@JSONField(ordinal = 2)double price;/*** 订单类型*/@JSONField(ordinal = 9)int orderType;/*** 订单创建时间*/@JSONField(ordinal = 3)Date ctime;/*** 订单支付时间*/@JSONField(ordinal = 9)Date payTime;
}
执行
用这三个类各自生成一个对象,赋值完全相同,然后用fastjson输出Json格式的字符串。
public class KnowJSONField {@Testpublic void test() {Order order = Order.builder().id(10001L).code("ABC001").title("iPhone 12 即刻下单").orderType(1).price(6688).ctime(new Date()).payTime(new Date()).build();OrderWithAnnotation orderWithAnnotation = OrderWithAnnotation.builder().id(10001L).code("ABC001").title("iPhone 12 即刻下单").orderType(1).price(6688).ctime(new Date()).payTime(new Date()).build();OrderWithOrdinal orderWithOrdinal = OrderWithOrdinal.builder().id(10001L).code("ABC001").title("iPhone 12 即刻下单").orderType(1).price(6688).ctime(new Date()).payTime(new Date()).build();String s1 = JSON.toJSONString(order);String s2 = JSON.toJSONString(orderWithAnnotation);String s3 = JSON.toJSONString(orderWithOrdinal);System.out.println("原始的order:");System.out.println(s1);System.out.println("有注解的order:");System.out.println(s2);System.out.println("只有顺序注解的order:");System.out.println(s3);}
}
输出结果如下,已经将需要重点关注的地方标注了出来。对比之下,一目了然。
- 红色是@JSONField(format = “yyyy-MM-dd HH:mm:ss”)的对比,时间进行格式化。
- 绿色是@JSONField(serialize = false)的对比,序列化时直接略过。
- 蓝色是加了@JSONField(name = “pay_time”, format = “yyyy-MM-dd HH:mm”)的对比,字段定义修改了,时间也完成了格式化。
- 黄色是@JSONField(ordinal = 1)的对比,顺序被指定为1、2、3的字段排到了前面。
好啦,就酱。
一眼看清@JSONField注解使用与效果相关推荐
- @jsonfield注解_好了,不装了,撸个注解有什么难的!
文章来源:https://mp.weixin.qq.com/s/z8qA8i3F8-SDbcTDMdJgjw 作者:沉默王二 注解是 Java 中非常重要的一部分,但经常被忽视也是真的.之所以这么说是 ...
- fastjson之@JSONField注解的几个的使用详细示范
首先这个注解有个参数可以设置,具体是:ordinal,name,format,serialize,deserialize.等等,后面的不常用啊. 先看model类. package com.lxk.m ...
- fastjson的@JSONField注解
fastjson的@JSONField注解 @JSONField作用:在字段和方法上1.Field:@JSONField作用在Field时,name可以定义输入key的名字,反序列化的时 值不会赋值到 ...
- 阿里巴巴fastjson @JSONField 注解说明
阿里巴巴fastjson @JSONField 注解说明 1 介绍 1.1 依赖 com.alibaba fastjson 1.2.47 1.2 @jsonField注解 @Retenti ...
- java jsonfield_FastJson 使用@JSONField注解和@JSONCreator指定构造方法
在某些应用场景下,如果需要定制序列化输出,比如说,希望序列化采用之后采用"ID",而不是"id",就可以使用@JSONField这个注解. @JSONField ...
- python 股票图表_k线图分析法_【趣味案例】用Python绘制K线图,一眼看清股市状况...
本文介绍关于[趣味案例]用Python绘制K线图,一眼看清股市状况及神一般的裸k交易法,精髓就这三步,一目了然!精髓就这三步,一目了然!(附图解析)的相关内容. [趣味案例]用Python绘制K线图, ...
- 抖音上的高清壁纸风景动图效果是怎么做出来的,实操来了
抖音上的高清壁纸风景动图效果是怎么做出来的,实操来了 利用一张图片就赚到了537.6元,大家认为可能吗? 肯定是可能的啦!今天我们就来复盘下这个项目怎么做的.小板凳搭好了哈! 先看几张截图: 其实你看 ...
- java jsonfield_关于fastjson的@JSONField注解的一些问题(详解)
@jsonfield 看源码它可以作用于字段和方法上. 引用网上说的, 一.作用field @jsonfield作用在field时,其name不仅定义了输入key的名称,同时也定义了输出的名称. 但是 ...
- @JSONField注解的使用
FastJson中 的注解@JSONField,一般作用在get/set方法上面,常用的使用场景有下面三个: 修改和json字符串的字段映射[name] 格式化数据[format] 过滤掉不需要序列化 ...
最新文章
- HarmonyOS UI开发 DirectionalLayout(定向布局) 的使用
- C#6.0语言规范(一) 介绍
- Android简单实现Socket通信,客户端连接服务器后,服务器向客户端发送文字数据
- leetcode刷题日记-边界着色
- mobi电子书中删除多余的空格
- dep指定版本 go_golang 官方依赖管理工具 dep 使用和持续集成
- 华数机器人旋转编程_华数工业机器人编程 MOVE运动指令
- 微信公众号管理平台使用教程
- 关于Webgl实际中遇到的一些坑,与大家分享。
- UI设计中面性图标设计总结
- dbeaver sql字体异常
- 221900437方彬彬
- 920记者招待会: 对话详解海尔张瑞敏首席的人单合一
- F2FS 基础知识二
- #汇编语言字符串的输出(dosbox运行时输出乱码问题解决)
- OpenCV实战(7)——OpenCV色彩空间转换
- Could not find artifact javax.comm:comm:jar:2.0.3
- 开关电源IC的选择要求
- 2021年N1叉车司机考试及N1叉车司机模拟试题
- 有关计算机知识的活动总结,计算机兴趣小组活动总结范文
热门文章
- java并发编程与高并发解决方案
- 关于学好asp及asp.net的经历
- RV1126笔记三十:freetype显示矢量字体
- 设计一个圆类(circle),内有私有成员radius代表半径, 函数get_radius( )用于获得半径、area( )用于计算圆的面积; (2)定义一个桌子类table,内有私有数据h
- 瓦尔登湖--读后精选片段
- Navicat 数据表的数据的添加,删除及使用sql完成数据的添加。
- matlab 中zeros,Matlab中zeros函数怎么操作?zeros函数使用教程分享
- shell编程基础知识
- uniapp中nvue页面中设置超出显示省略号
- mitmproxy:8080端口被占用