@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注解使用与效果相关推荐

  1. @jsonfield注解_好了,不装了,撸个注解有什么难的!

    文章来源:https://mp.weixin.qq.com/s/z8qA8i3F8-SDbcTDMdJgjw 作者:沉默王二 注解是 Java 中非常重要的一部分,但经常被忽视也是真的.之所以这么说是 ...

  2. fastjson之@JSONField注解的几个的使用详细示范

    首先这个注解有个参数可以设置,具体是:ordinal,name,format,serialize,deserialize.等等,后面的不常用啊. 先看model类. package com.lxk.m ...

  3. fastjson的@JSONField注解

    fastjson的@JSONField注解 @JSONField作用:在字段和方法上1.Field:@JSONField作用在Field时,name可以定义输入key的名字,反序列化的时 值不会赋值到 ...

  4. 阿里巴巴fastjson @JSONField 注解说明

    阿里巴巴fastjson @JSONField 注解说明 1 介绍 1.1 依赖 ​ com.alibaba ​ fastjson ​ 1.2.47 1.2 @jsonField注解 @Retenti ...

  5. java jsonfield_FastJson 使用@JSONField注解和@JSONCreator指定构造方法

    在某些应用场景下,如果需要定制序列化输出,比如说,希望序列化采用之后采用"ID",而不是"id",就可以使用@JSONField这个注解. @JSONField ...

  6. python 股票图表_k线图分析法_【趣味案例】用Python绘制K线图,一眼看清股市状况...

    本文介绍关于[趣味案例]用Python绘制K线图,一眼看清股市状况及神一般的裸k交易法,精髓就这三步,一目了然!精髓就这三步,一目了然!(附图解析)的相关内容. [趣味案例]用Python绘制K线图, ...

  7. 抖音上的高清壁纸风景动图效果是怎么做出来的,实操来了

    抖音上的高清壁纸风景动图效果是怎么做出来的,实操来了 利用一张图片就赚到了537.6元,大家认为可能吗? 肯定是可能的啦!今天我们就来复盘下这个项目怎么做的.小板凳搭好了哈! 先看几张截图: 其实你看 ...

  8. java jsonfield_关于fastjson的@JSONField注解的一些问题(详解)

    @jsonfield 看源码它可以作用于字段和方法上. 引用网上说的, 一.作用field @jsonfield作用在field时,其name不仅定义了输入key的名称,同时也定义了输出的名称. 但是 ...

  9. @JSONField注解的使用

    FastJson中 的注解@JSONField,一般作用在get/set方法上面,常用的使用场景有下面三个: 修改和json字符串的字段映射[name] 格式化数据[format] 过滤掉不需要序列化 ...

最新文章

  1. HarmonyOS UI开发 DirectionalLayout(定向布局) 的使用
  2. C#6.0语言规范(一) 介绍
  3. Android简单实现Socket通信,客户端连接服务器后,服务器向客户端发送文字数据
  4. leetcode刷题日记-边界着色
  5. mobi电子书中删除多余的空格
  6. dep指定版本 go_golang 官方依赖管理工具 dep 使用和持续集成
  7. 华数机器人旋转编程_华数工业机器人编程 MOVE运动指令
  8. 微信公众号管理平台使用教程
  9. 关于Webgl实际中遇到的一些坑,与大家分享。
  10. UI设计中面性图标设计总结
  11. dbeaver sql字体异常
  12. 221900437方彬彬
  13. 920记者招待会: 对话详解海尔张瑞敏首席的人单合一
  14. F2FS 基础知识二
  15. #汇编语言字符串的输出(dosbox运行时输出乱码问题解决)
  16. OpenCV实战(7)——OpenCV色彩空间转换
  17. Could not find artifact javax.comm:comm:jar:2.0.3
  18. 开关电源IC的选择要求
  19. 2021年N1叉车司机考试及N1叉车司机模拟试题
  20. 有关计算机知识的活动总结,计算机兴趣小组活动总结范文

热门文章

  1. java并发编程与高并发解决方案
  2. 关于学好asp及asp.net的经历
  3. RV1126笔记三十:freetype显示矢量字体
  4. 设计一个圆类(circle),内有私有成员radius代表半径, 函数get_radius( )用于获得半径、area( )用于计算圆的面积; (2)定义一个桌子类table,内有私有数据h
  5. 瓦尔登湖--读后精选片段
  6. Navicat 数据表的数据的添加,删除及使用sql完成数据的添加。
  7. matlab 中zeros,Matlab中zeros函数怎么操作?zeros函数使用教程分享
  8. shell编程基础知识
  9. uniapp中nvue页面中设置超出显示省略号
  10. mitmproxy:8080端口被占用