当前位置: 首页 > news >正文

@JsonAlias 和 @JsonProperty的使用

@JsonAlias 和 @JsonProperty

  • 前言
  • 一、@JsonAlias
  • 二、@JsonProperty
  • 总结


前言

使用场景:主要运用于参数映射。
如:将admin_id 的值赋予adminId
常用于:接收第三方参数,并对参数进行驼峰化或别名。


一、@JsonAlias

是在反序列化的时候可以让Bean的属性接收多个json字段的名称。

   @JsonAlias({"admin_id","id"})private Long adminId;

此时:可以将响应/请求参数里的admin_id、id、adminId的值赋予对象adminId上。

参数为:
{"id": 789,"adminId":123,"admin_id":456
}
优先级为:取最下面的参数,这里是取admin_id

当有两个属性用到了id时:

    @JsonAlias({"admin_id","id"})private Long adminId;@JsonProperty("name")private String adminName;@JsonAlias("id")private String adminAddress;
参数为:
{"adminId": 123,"id": 789,"admin_name": "qqq","name": "zzz","admin_address": "aaa"
}打印结果为:
{"adminAddress":"789","adminId":123,"adminName":"zzz"}

尽量避免重复使用,难以维护。

二、@JsonProperty

更改Bean字段的属性名,效果基本上面一样。
但是只支持匹配一个字段.

    @JsonProperty("name")private String adminName;

只匹配:name
adminName有值也不会匹配

参数:
{"admin_name": "qqq","name": "zzz","adminName":"okm"
}
打印结果:
{"adminName":"zzz"}
参数:
{"admin_name": "qqq","adminName":"okm"
}
打印结果:
{}

至于@JsonProperty(value = “name”, access = JsonProperty.Access.READ_ONLY)
access的几种使用,一般开发不会用到。
Access.WRITE_ONLY:只在序列化时使用修改后的字段
Access.READ_ONLY:只在反序列化时使用,类似于@JsonAlias注解
Access.READ_WRITE:在序列化和反序列化都使用修改后字段
Access.AUTO:自动确定,和READ_WRITE一样效果

总结

简单列举了下@JsonAlias 和 @JsonProperty的使用。
个人在开发中常用的是:@JsonAlias

因为会和python系统做对接,pythod的返回值有些很古老(蛇型、驼峰都有)。

    @JsonAlias("admin_address")private String adminAddress;

这么些就可以取到admin_address、adminAddress。总归有一个应该有值。

http://www.lryc.cn/news/67846.html

相关文章:

  • Grafana系列-统一展示-8-ElasticSearch日志快速搜索仪表板
  • 【K8s】openEuler23操作系统安装Docker和Kubernetes
  • 异常数据检测 | Python实现ADTK时间序列异常数据检测
  • 软件测试之jmeter性能测试让你打开一个全新的世界
  • Redis数据结构——动态字符串、Dict、ZipList
  • ipad可以用别的品牌的手写笔吗?便宜的ipad电容笔
  • 【数据库】关于SQL SERVER的排序规则的问题分析
  • 算法修炼之练气篇——练气十三层
  • ChatGPT:AI不取代程序员,只取代的不掌握AI的程序员
  • 数字革命下的产品:百数十年变迁的启示与思考。
  • 部门新来一00后,给我卷崩溃了...
  • 使用Spring Boot和Docker构建可伸缩的微服务架构,应对增长的业务需求
  • 计算机组成原理基础练习题第四章
  • 浅谈Gradle构建工具
  • 如何获取和制作免费的icon图标素材
  • 【MySQL】MySQL索引--聚簇索引和非聚簇索引的区别
  • 如何使用 SVG.js 中的一些相关方法来创建、设置和操作 image 元素
  • 展会进行时!5月16-18日箱讯与您相约中国航交会
  • CMake:递归检查并拷贝所有需要的DLL文件
  • python常见问题及解决方案
  • JUC之Synchronized与Lock
  • 动态规划理论基础
  • Redis的数据类型
  • vue3鼠标经过显示按钮
  • 【2023华为OD笔试必会25题--C语言版】《18 最短木板长度》——数组
  • yolov5车道线检测+测距(碰撞检测)
  • 微服务学习笔记--(Gateway网关)
  • QML插件的创建及调用
  • 数据结构学习分享之树的介绍
  • MySQL数据库基础2