一眼看清@JSONField注解使用与效果

article/2025/9/23 19:40:52

@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);}
}

输出结果如下,已经将需要重点关注的地方标注了出来。对比之下,一目了然。
image

  • 红色是@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的字段排到了前面。

好啦,就酱。


http://chatgpt.dhexx.cn/article/45mAZNgM.shtml

相关文章

perclos

WierwiIIe驾驶模拟器上的实验结果证明,眼睛的闭合时间一定程度地反映疲劳, 如图 所示。 在此基础上, 卡内基梅隆研究所经过反复实验和论证,提出了度量疲劳/瞌睡的物理量 PERCLOS (Percentage of EyeIid CIosure over t…

机器视觉毕业设计 深度学习驾驶人脸疲劳检测系统 - python opencv

文章目录 0 前言1 课题背景2 Dlib人脸识别2.1 简介2.2 Dlib优点2.3 相关代码2.4 人脸数据库2.5 人脸录入加识别效果 3 疲劳检测算法3.1 眼睛检测算法3.2 打哈欠检测算法3.3 点头检测算法 4 PyQt54.1 简介4.2相关界面代码 0 前言 🔥 这两年开始毕业设计和毕业答辩的…

Android studio开发 课设必备疲劳检测app

使用android内置摄像头,可以根据人的状态判定是否疲劳,界面设计较好,检测后还可以回到主界面 运行截图如下,获取源码有偿,拒绝白嫖党~

基于MATLAB的人眼开度疲劳检测识别

一、课题背景 目前,随着人们生活水平的提高,各国人民汽车保有量也越来越多,伴随而来的是交通事故也在不断增多。研究表明,疲劳驾驶是造成交通事故日益严重的重要原因。开展驾驶员疲劳检测和预警的研究工作,有着十分重…

Dlib+Opencv库实现疲劳检测

文章目录 1.关键点检测2.算法实现的核心点3.算法实现(1)人脸的关键点集合(2)加载人脸检测库和人脸关键点检测库(3)绘制人脸检测的框(4)对检测之后的人脸关键点坐标进行转换&#xff…

Python基于OpenCV的工作疲劳检测系统[源码&UI界面&部署教程]

1.图片演示 2.视频演示 [项目分享]Python基于OpenCV的实时疲劳检测[源码&演示视频&部署教程]_哔哩哔哩_bilibili 3.检测方法 1)方法 与用于计算眨眼的传统图像处理方法不同,该方法通常涉及以下几种组合: 1、眼睛定…

Opencv之疲劳检测

项目要求 在一段视频中,通过检测人眨眼的次数来判断他的疲劳程度。 代码实现 1、导入工具包 from scipy.spatial import distance as dist import numpy as np import dlib import cv22、对脸上的部位进行定义 在关键点定位的官方文档中,提取68个关…

人脸识别-驾驶疲劳检测(1) 眨眼检测

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一、背景 (1)环境搭建 (2)下载开源数据集 (3)视觉疲劳检测原理 二、代码示例 三、效…

人脸检测高级:疲劳检测

今天我们实现疲劳检测。 如果眼睛已经闭上了一段时间,我们会认为他们开始打瞌睡并发出警报来唤醒他们并引起他们的注意。我们测试一段视频来展示效果。同时代码中保留开启摄像头的的代码,取消注释即可使用。 使用 OpenCV 构建犯困检测器 要开始我们的实…

数字图像处理课程设计-疲劳检测系统

文章目录 数字图像处理课程设计-疲劳检测系统前言一、课程设计任务二、设计框图三、准备工作四、任务流程4.1视频预处理4.2图片分割 五、结果六、项目总结 数字图像处理课程设计-疲劳检测系统 前言 此系统基于MATLAB设计,核心思想是PERCLOS算法. 参考文…

MATLAB的疲劳检测系统

一、课题介绍 本设计针对现有逐帧眼睛定位方法计算量大,速度慢的缺点,提出一种用于疲劳驾驶实时监测的眼睛定位方法,该方法能够在保证眼睛定位准确性的同时,减少人脸定位的计算量,从而提高图像处理速度,实现…

毕业设计 机器视觉 opencv 深度学习 驾驶人脸疲劳检测系统 -python

文章目录 0 前言1 课题背景2 Dlib人脸识别2.1 简介2.2 Dlib优点2.3 相关代码2.4 人脸数据库2.5 人脸录入加识别效果 3 疲劳检测算法3.1 眼睛检测算法3.2 打哈欠检测算法3.3 点头检测算法 4 PyQt54.1 简介4.2相关界面代码 5 最后 0 前言 🔥 这两年开始毕业设计和毕业…

利用opencv 做一个疲劳检测系统(2)

文章目录 杂谈实现步骤核心算法交互界面界面代码检测效果源代码 杂谈 最近发现视力下降严重, 可能跟我的过度用眼有关,于是想着能不能做一个检测用眼疲劳的,灵感来自特斯拉的疲劳检测系统。 效果如下: 实现步骤 实现核心算法制…

基于Matlab深度学习的驾驶员疲劳检测系统

随着城市化进程不断加快,中国汽车的需求 量和保有量也急剧上升。 截至 2020 年 9 月,中国 汽车保有量达到了 2.75 亿辆,随着车辆保有量的 增加,交通事故的发生率也在逐年上升。2017 年交通事故共计 20.3 万起,因车祸死亡人数 6.3 万 人,2018 年交通事故较 2017 年上升 20.6%,20…

基于MATLAB的疲劳检测系统

基于MATLAB的疲劳检测系统 一、课题介绍 随着汽车工业的不断发展,随之而来的社会问题也愈加严重。交通事故给人们造成巨大伤害的同时,也给社会带来沉重的负担和影响。由于疲劳驾驶是引起交通事故的一个主要原因。因此,研究一种合理有效、实时准确检测驾驶员疲劳驾驶的非接触式车…

基于图像分割的疲劳检测方法研究

问题: 随着社会的不断进步,汽车已经成为了当今世界拥有主宰地位的交通工具。然而汽车数量的上升同时也导致交通事故数量猛增,由司机疲劳驾驶引起的交通事故的发生频率更是不断攀升。疲劳的复杂性引起了各个学科的研究者广泛关注,传统的疲劳评估方法不仅需…

疲劳检测实验报告

疲劳检测实验报告 邢益玮 201930101151 2021/1/13 (重度拖延症了,内容又有点多,学长和老师不好意思了🙏🙏🙏) 文章目录 疲劳检测实验报告前言一、最初的尝试——dlib库1.1 信息收集1.2 为Anac…

基于MATLAB的疲劳检测

在疲劳检测算法中,个人感觉最好的算法是 Dlib 这个库可以实现人脸的关键点的检测,有了人眼睛的点位,便可以检测眨眼之类的频率来进行人眼识别; 但是在matlab中调用dlip需要比较复杂的操做,有兴趣的可以网上搜索做法&am…

MATLAB疲劳检测系统

目录 摘要 I Abstract II 1 绪论 1 1.1 研究背景及意义 1 1.2 国内外疲劳驾驶研究现状 2 1.3本文的主要研究内容及组织结构 3 2 人脸检测与定位技术 4 2.1人脸检测与定位技术概述 4 2.1.1基于图像的人脸检测方法 4 2.1.2基于特征的人脸检测方法 5 2.2 Adaboost算法介绍 6 2.2.1…

python疲劳检测

疲劳驾驶检测 结合眼睛的闭合状态和嘴巴闭合状态,综合判断驾驶人员的疲劳状况。python编写,tensorflow,opencv和dlib实现人脸的检测和特征点提取。 效果图: 效果视频: python opencv 疲劳驾驶检测 项目代码下载: pyt…