@JsonAlias和@JsonProperty注解使用详解
前言
在实际的工作需求中,写接口的人会经常遇到对于Bean各种各样的操作,比如我对数据库要写个Bean,返回前台还得有个Vo bean,在另一个需求又用到和这个类似的Bean了,但是就有些字段不一样啊,字段的有些类型不一样啊,接收的参数名不一样啊,反正就是一个小小的需求变动,可能就需要写好几个不同的Bean,之前需求没那么多的时候写两个就写两个吧,后来写的多了就烦了,所以认真研究下怎么转换就迫在眉睫了。

JackSon
这里讲解的是JackSon这个工具的注解用法,没有的直接去maven里面导入一个就好了。

@JsonAlias
这个注解是在JackSon 2.9版本中才有的。
作用是在反序列化的时候可以让Bean的属性接收多个json字段的名称。可以加在字段上或者getter和setter方法上。

public class User {@JsonAlias({"name","user"})private String username;private String password;private Integer age;
}

Get Set方法省略
{
“name” : “小明”,
“password” : “123”,
age : 15
}
可以从下面看到json字段是name也成功对应到了Bean的username属性

如果不加上面那个注解肯定会报json解析异常错误。
注意:序列化的时候仍然是原始的属性名称,只是在反序列化的时候可以接收多个json字段,如果多个json字段对应了Bean里面的同一个属性,依然会报Json解析异常错误的。

@JsonProperty
这个注解是更改Bean字段的属性名用的。
Access.WRITE_ONLY:只在序列化时使用修改后的字段
Access.READ_ONLY:只在反序列化时使用,类似于@JsonAlias注解
Access.READ_WRITE:在序列化和反序列化都使用修改后字段
Access.AUTO:自动确定,一般是和第三个一样,啥情况不一样我也不清楚,如果不写access,默认就是这个。
value是逻辑属性的名称,如果只有value则省略

  @JsonProperty("name")private String username;

access是更改逻辑属性序列化和反序列化的可见性,

 @JsonProperty(value = "name", access = JsonProperty.Access.WRITE_ONLY)private String username;private String password;private Integer age;

注意这里就是已经修改了序列化和反序列化的json字段的名称,你拿username反序列化的时候已经接收不到这个数据了,只能拿name才可以接收,和@JsonAlias注解还是不同的,他是两个都可以接收。

{"username" : "小明","password" : "123","age" : 15
}

————————————————
版权声明:本文为CSDN博主「灬叛逆丿文」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_44130081/article/details/89553493

【转】@JsonAlias和@JsonProperty注解使用详解相关推荐

  1. spring之旅第四篇-注解配置详解

    spring之旅第四篇-注解配置详解 一.引言 最近因为找工作,导致很长时间没有更新,找工作的时候你会明白浪费的时间后面都是要还的,现在的每一点努力,将来也会给你回报的,但行好事,莫问前程!努力总不会 ...

  2. Java 注解用法详解——@SuppressWarnings

    转自: https://www.cnblogs.com/fsjohnhuang/p/4040785.html Java魔法堂:注解用法详解--@SuppressWarnings 一.前言 编码时我们总 ...

  3. Java注解(Annotation)详解

    转: Java注解(Annotation)详解 幻海流心 2018.05.23 15:20 字数 1775 阅读 380评论 0喜欢 1 Java注解(Annotation)详解 1.Annotati ...

  4. Spring 3.0 注解注入详解

    Spring 3.0 注解注入详解 2011-04-15 09:44 17ZOUGUO ITEYE博客 我要评论(1) 字号:T | T AD: 一.各种注解方式 1.@Autowired注解(不推荐 ...

  5. spring MVC请求处理类注解属性详解

    spring MVC请求处理类注解属性详解

  6. Retrofit 注解参数详解

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/121000230 本文出自[赵彦军的博客] 系列文章推荐: Android Flow ...

  7. JAVA元注解@interface详解(@Target,@Documented,@Retention,@Inherited)

    转载自 JAVA元注解@interface详解(@Target,@Documented,@Retention,@Inherited) jdk1.5起开始提供了4个元注解,用来定义自定义注解的注解,它们 ...

  8. Spring 注解@Value详解

    一.spring(基础10) 注解@Value详解[1] 一 配置方式 @value需要参数,这里参数可以是两种形式: [html] view plaincopy @Value("#{con ...

  9. SpringBoot - @EnableConfigurationProperties注解使用详解

    @EnableConfigurationProperties注解的作用是什么? 将标注了@ConfigurationProperties注解的类注入到Spring容器中.该注解是用来开启对@Confi ...

  10. springboot @Valid 注解用法详解

    @Valid 注解通常用于对象属性字段的规则检测,具体啥意思,下面让我娓娓道来: 下面我们以新增一个员工为功能切入点,以常规写法为背景,慢慢烘托出 @Valid 注解用法详解. 那么,首先,我们会有一 ...

最新文章

  1. 空间直角坐标系与球面坐标互转
  2. NOIP2013pj车站分级[拓扑排序]
  3. PHP异常处理类(文件上传提示)
  4. 易百教程人工智能python修正-人工智能无监督学习(聚类)
  5. Redis安装及基本配置
  6. LeetCode 747. 至少是其他数字两倍的最大数
  7. 405 宝塔钩子_宝塔面板webhook配合gitlab完成git钩子的搭建
  8. Javascript 事件冒泡处理
  9. extjs4.2 前端读取对象的方法
  10. html5 制作商品显示介绍,HTML5+CSS3:3D展示商品信息示例
  11. JavaScript使用技巧(2)
  12. 技术文章-Java类的继承
  13. 仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表't_ArticleFiles'中的标识列指定显式值。...
  14. 服务器 启动多个nginx_Nginx工作原理和优化总结
  15. CAT3、CAT4、CAT5、CAT5E、CAT6、CAT6A、CAT7和CAT8网线的介绍
  16. 需要一个红警2的易语言源码
  17. Hi3519AV100 适配IMX347
  18. YOLOv3: An Incremental Improvement (YOLOv3 论文翻译)
  19. 微波技术与天线_HFSS_微带贴片天线建模仿真
  20. 168640-82-2,Azide-PEG4-Tos含有叠氮化物(N3)基团和对甲苯磺酰基的杂功能交联剂

热门文章

  1. 【图像压缩】基于matlab GUI DCT图像无损压缩【含Matlab源码 726期】
  2. SPSS 虚拟变量(图文+数据集)【SPSS 038期】
  3. ai人工智能 工业运用_人工智能在老年人健康中的应用
  4. DataFrame创建程序利用字典创建dataframe对象
  5. 计算机应用基础统考模拟练习系统,网教计算机应用基础统考综合模拟练习题(一)...
  6. 台服海岛纪元显示无法连接服务器,打开海岛纪元提示网络异常或者连接不上
  7. c51语言中 位取反指令,C51的几种位操作运算说明
  8. Linux查找link文件,Linux下查找一个文件的所有软硬链接
  9. 第二十三章:触发器和行为(九)
  10. C语言读取文件输入输出