swagger对json数据的处理

news2024/11/26 9:35:46

在实习中遇到了一个不寻常的事情,今天和同事讨论一个小问题,同事使用swagger,想要调用一个接口,这个接口要传递一个json对象,对应java的一个实体类,但是有一个属性同事不想看到它,就用@JsonIgnore给注掉了(当时这个我不知道,😫),问题出现的场景是在调用另一个接口的时候,impl类里需要查询该字段,并向这个类传递这个属性。他从数据库中查询到数据后设置给了这个属性,最后调用json就是看不到这个属性。

开始看的时候我也懵了,调试都有数据,最终发现了是该属性加上了@JsonIgnore注解。正好向我想起之前一篇文章的另一个注解@JSONField。好奇心驱使我在swager中做了对比。

其实这个问题很简单的,只用在@ApiModelProperty注解中加上hidden = true就可以了(默认为false)。

这个问题解决。但是我是一个爱思考的人。他用的是@JSONField注解,而我之前没有用过这个注解,我决定是尝试使用一下。

一个简单的场景

实体类

@ApiModel
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AA {
    
    @ApiModelProperty(name = "name")
    Integer id;

    @ApiModelProperty(name = "name")
    String name;
    
    @ApiModelProperty(name = "my_id")
    int my_id;
    
    List<String> list;

}

controller

@RestController
@RequestMapping("/admin/acl/index")
public class IndexController {
    @GetMapping("/test")
    public AA test() {
        AA aa = new AA();
        aa.setId(0);
        aa.setName("");
        aa.setMy_id(0);
        ArrayList<String> list = new ArrayList<>();
        list.add("张三");
        list.add("李四");
        list.add("王五");
        aa.setList(list);
        return aa;
    }
}

所有测试针对list属性

1.list什么注解不加

swagger

 

 

postman

swagger竟然默认给到list一些信息。

postman也正常返回,毕竟什么也没加

2.只给list加上@JsonIgnore

查看结果

swagger

 

postman

swagger中没有list字段

postman中没有list字段

加上@JsonIgnore注解后,list字段就像消失了一样,没人知道它是否存在。

我之前用的是@JSONField,我不仅是测试还是复习,观察一下结果。

3.只给list加上@JSONField(name = "my_list")

 swagger

 

 

 

postman

这个name属性怎么没有起作用?是swagger太强势了?

4.只给list加上@JSONField(serialize = false)

swagger

 

 

 

postman

这swagger这么强势吗?我的@JSONField直接失效,不序列化失效了。

不是swagger太强势,而是@JSONField就没有起作用,这个注解是fastjson的注解。

springboot中默认的json解析器是Jackson。如果不指定要用的json解析器,就会使用默认的。所以我们要想让它起作用就要指定fastjson为我们的默认json解析器。

这次测试忘记了这个知识点(看来我还待练)

在配置类加上下面代码即可

@Bean
public HttpMessageConverters fastJsonHttpMessageConverters() {
    FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
    FastJsonConfig fastJsonConfig = new FastJsonConfig();
    fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);
    fastConverter.setFastJsonConfig(fastJsonConfig);
    HttpMessageConverter<?> converter = fastConverter;
    return new HttpMessageConverters(converter);
}

查看效果

5.配置后只给list加上@JSONField(name = "my_list")

swagger

 

 

postman

 

swagger中的list没有使用别名

postman中使用了别名,并格式化了了json数据

6.配置后只给list加上@JSONField(serialize = false)

swagger

 

 

postman

 

swagger还是会有list字段

postman中已经接受不到这个字段了

总结:

1.不想在swagger文档中显示字段但传递是有这个字段就使用@ApiModelProperty(hidden = true)

2.不想在swagger文档中显示字段而且不想让字段在返回结果中使用@JsonIgnore(如果只使用一个注解)

3.想在swagger文档中显示字段而且不想让字段在返回结果中使用@JSONField(serialize = false)(如果只想使用这一个注解,暂时想不到有这样的场景,手动狗头)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/778498.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

主从复制 [学习笔记] MaterSlave

文章目录 前言MySQL主从复制的实战案例1、环境搭建2、主库配置&#xff0c;进入vim /etc/my.cnf3、重启数据库4、建立同步账号5、锁表设置只读6、设置主库状态7、备份数据库资料8、解锁9、主库备份数据上传到从库10、slave从库设置11、还原数据的备份12、设定从主库同步 前言 …

物流智能搬运机器人|HEGERLS四向穿梭车在复杂生产场景下的智能化作业应用

一般而言&#xff0c;物流有三个基本环节&#xff1a;存取、输送和分拣。在存取环节&#xff0c;常用方式有两种&#xff1a;托盘存取和料箱存取。以前托盘存取应用得多一些&#xff0c;但随着电商、新零售的兴起&#xff0c;B2b、B2C业务快速增长&#xff0c;订单碎片化趋势明…

ripv2小实验

子网划分 192.168.1.0/24&#xff1a; 192.168.1.0/26 192.168.1.64/26 192.168.1.128/26 192.168.1.192/26 192.168.1.0/26划分为 192.168.1.0/26 192.168.1.4/26 192.168.1.8/26 192.168.1.12/26 192.168.1.16/26 192.168.1.20/26 192.168.…

IDEA如何打包springboot成jar包,并运行、停止、重启,本地依赖不能打包怎么办

1、将springboot项目打包成jar 第一步 这里要注意依赖的包的导入&#xff0c;有pom.xml中网络依赖导入&#xff0c;有的包是本地依赖导入&#xff0c;本地依赖的包只需在pom.xml加入一下代码即可&#xff01; <dependency><groupId>jacob</groupId>//名称…

idea设置git 忽略的文件

1、FIle-->setting 打开设置对话框。 2、 找到如图所示的FileType。 3、添加需要忽略的文件&#xff0c;比如idea&#xff0c;classes&#xff0c;添加完后&#xff0c;点击apply、OK 保存。 注&#xff1a;本设置基于idea 2023.1.3版本

【FPGA】串口通信讲解-状态机判断数据值

&#x1f389;欢迎来到FPGA专栏~串口通信讲解 ☆* o(≧▽≦)o *☆嗨~我是小夏与酒&#x1f379; ✨博客主页&#xff1a;小夏与酒的博客 &#x1f388;该系列文章专栏&#xff1a;FPGA学习之旅 文章作者技术和水平有限&#xff0c;如果文中出现错误&#xff0c;希望大家能指正&…

【ShaderToy中图形效果转译到UnityShaderlab案例分享,实现粒子场_ParticleField】

Shader"ShaderToy/ParticleField" {Properties{_iMouse("iMouse", Vector) = (0,0,0,0)}SubSha

怎么把PDF转为word?1分钟解决难题

PDF文件在我们的电脑上应用非常广泛&#xff0c;由于其较高的安全性和兼容性&#xff0c;得到了广泛的认可。然而&#xff0c;对于一些人来说&#xff0c;PDF文件不能直接进行编辑和修改可能是一个问题。因此&#xff0c;通常我们需要将其转换为Word格式&#xff0c;以便在Word…

uniapp 微信小程序 input详解 带小数点的input、可查看密码的输入框input

官网文档地址 1、template <!-- 本示例未包含完整css&#xff0c;获取外链css请参考上文&#xff0c;在hello uni-app项目中查看 --> <template><view><view class"uni-common-mt"><view class"uni-form-item uni-column"&g…

Mysql 主从复制、读写分离

目录 前言 一、主从复制原理 1.1 MySQL的复制类型 1.2 mysql主从复制的工作原理 1.3 MySQL主从复制延迟 1.4 MySQL四种同步方式 1.5 MySQL支持的复制类型 二、 MySQL应用场景 三、主从复制实验 3.1 MySQL主从服务器时间同步 3.1.1 安装ntp、修改配置文件 3.1.2 两台…

如何查看小程序的APPID和AppSecret

小程序APPID可以在手机上打开小程序后&#xff0c;点击右上角三点&#xff1a; 然后点击中间位置的小程序名称&#xff0c;进入小程序介绍页面&#xff1a; 点击“更多资料”后&#xff0c;进入页面就可以看到上方有APPID&#xff1a; 另一种方法&#xff1a; 在微信公众平台登…

安装:【vue】npm install -g @vue/cli出现错误

安装Vue脚手架&#xff0c;cli就是Command Line Interface 命令行接口 工具 进行到npm install -g vue/cli这一步出现错误&#xff0c;操作步骤如下&#xff1a; 1.通过 wins打开开始栏的搜索框&#xff0c;输入cmd&#xff0c;管理员身份运行 2.先下载node.js 不知道有没有…

数据库应用:Mycat+HAProxy+Keepalived实现高可用

目录 一、理论 1.高可用 2.部署高可用 二、实验 1.MycatHAProxyKeepalived实现高可用 三、问题 1.开启HA-Proxy失败 2. VMware 克隆linux 网卡UUID重复问题 3.keepalived状态报错 四、总结 一、理论 1.高可用 &#xff08;1&#xff09;概述 ①Mycat 在实际项目中…

蓝桥杯专题-真题版含答案-【加法变乘法】【三羊献瑞】【交换瓶子】【卡片换位】

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列 &#x1f449;关于作者 专注于Android/Unity和各种游…

【专题速递】多模态数字人、多模态媒体大模型以及AI与AIGC对音视频的影响

// 随着AIGC内容的兴起&#xff0c;多模态媒体大模型逐渐进入大家的视野&#xff0c;而LLM的发展又让人们对未来音视频工具产生了新的思考。7月29日LiveVideoStackCon2023上海站AIGC与内容生产专场&#xff0c;集齐当下最热门的AIGC话题&#xff0c;与您共享。 AIGC与内容生产…

华为云使用 helm 模板

登录华为云上的 cce 进入对应的集群&#xff0c;选择模板管理 注意&#xff1a;华为云上不能配置 helm 仓库&#xff0c;只提供手动上传模板&#xff0c;模板的后缀为 tgz 下载模板的方式有很多种&#xff0c;这里用 xxl-job 举例 添加 helm 仓库更新仓库下载模板 helm rep…

基于linux下的高并发服务器开发(第二章)- 2.24 信号集及相关函数

1.用户通过键盘 Ctrl C, 产生2号信号SIGINT (信号被创建) 2.信号产生但是没有被处理 &#xff08;未决&#xff09; - 在内核中将所有的没有被处理的信号存储在一个集合中 &#xff08;未决信号集&#xff09; - SIGINT信号状态被存储在第二个标志位上 - 这个…

概率论和随机过程的学习和整理--番外15,如何计算N合1的合成数量问题?

目录 1 目标问题&#xff1a;多阶2合1的合成问题 1.1 原始问题 1.2 合成问题要注意&#xff0c;合成的数量 1.3 合成问题不能用马尔科夫链来解决 2 方案1&#xff1a;用合成公式合成多次能解决吗&#xff1f; --不能&#xff0c;解决不了递归的问题 3 方案2&#xff0c;…

微分流形2:流形上的矢量场和张量场

来了来了&#xff0c;切向量&#xff0c;切空间。流形上的所有的线性泛函的集合&#xff0c;注意是函数的集合。然后取流形上的某点p&#xff0c;它的切向量为&#xff0c;线性泛函到实数的映射。没错&#xff0c;是函数到实数的映射&#xff0c;是不是想到了求导。我们要逐渐熟…

uni-app 微信小程序:启用组件按需注入

uni-app 微信小程序&#xff1a;启用组件按需注入 文章目录 uni-app 微信小程序&#xff1a;启用组件按需注入一、官方文档按需注入注意事项 二、HBuilder X 设置三、效果 一、官方文档 https://developers.weixin.qq.com/miniprogram/dev/framework/ability/lazyload.html 按…