Swagger OpenAPI Schema 为空时 Example Value 显示 "string" 的原因及解决方案
解决Swagger UI示例值显示"string"的问题
最近在使用ObjectScript生成JSON接口文档时,遇到了一个奇怪的问题:
- 生成的JSON数据是正常的。

- 但Swagger UI的Example Value却显示为
"string",而不是预期的JSON结构。

经过一番排查,我发现问题的根源在于Swagger UI的版本问题,并成功找到了解决方案。这里分享我的思考过程,希望能帮到有类似困扰的朋友。
排查过程
1. 确保生成的JSON数据正确
最开始,我怀疑是代码逻辑有误,导致生成的JSON格式不对。然而,当我把生成的JSON复制到Swagger Editor中时,发现它能正确解析,这说明JSON本身是正确的。

这让我意识到,Swagger UI可能是自动补全了正确的 OpenAPI/Swagger 版本信息,从而正常显示JSON数据。
2. 怀疑Swagger UI版本问题
既然JSON数据是正确的,那问题可能出在Swagger UI的版本上。我回顾了自己的环境,发现Swagger UI的版本是5.11.0。
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<meta name="description" content="SwaggerUI"/>
<title></title>
<link rel="stylesheet" href="https://unpkg.com/swagger-ui-dist@5.11.0/swagger-ui.css"/>
</head>
于是,我尝试直接修改生成的HTML文件,将Swagger UI的版本从5.11.0升级到5.20.0(即最新版本),然后重新加载页面,结果问题完美解决!
3. 发现官方修复记录
随后,我在Swagger UI的官方Release Notes中找到了相关修复记录。
原来,在5.11.10版本中,Swagger UI修复了这个Bug。

这也进一步验证了我的猜测:问题并非出在我的代码,而是Swagger UI在旧版本中的Bug导致Example Value无法正确显示。
经验总结
- 不要太相信AI工具。我问了gpt4和claude3.5都3.7,一直给我乱改代码,找不到原因。
- 遇到问题,思路要开放。不要一开始就怀疑自己的代码,可能是外部工具或库的问题。
- 检查工具版本。当出现未知问题时,尝试更新到最新版本,或查阅官方Release Notes,可能Bug早已被修复。
- 直接修改生成的HTML。在无法确定问题来源时,直接编辑最终生成的文件,能更直观地测试不同版本的影响。
希望这篇文章能帮助到有类似困扰的朋友,也欢迎大家分享自己的调试经验!
Swagger OpenAPI Schema 为空时 Example Value 显示 "string" 的原因及解决方案的更多相关文章
- asp:Repeater数据源为空时处理方式
当Repeater的数据源为空时,会显示空白,界面不友好,以下方式可以简单处理. <asp:repeater runat="server" id="rplist2& ...
- Swagger/OpenAPI By Swashbuckle在NetCore 3.1中较NetCore 2.2使用的注意事项及入门
方案选择 使用Web API时,了解其各种方法对开发人员来说可能是一项挑战. Swagger也称为OpenAPI(Open Application Programming Interface,开放应用 ...
- 服务器通信REST、gRPC,Swagger/OpenAPI
服务间的通信方式是在采用微服务架构时需要做出一个最基本的决策.默认的选项是通过 HTTP 发送 JSON,也就是所谓的 REST API.我们也是从 REST 开始的,但最近我们决定改用 gRPC. ...
- 服务器通信REST、gRPC,Swagger/OpenAPI,Consul
服务间的通信方式是在采用微服务架构时需要做出一个最基本的决策.默认的选项是通过 HTTP 发送 JSON,也就是所谓的 REST API.我们也是从 REST 开始的,但最近我们决定改用 gRPC. ...
- VB6.0中,DTPicker日期、时间控件不允许为空时,采用文本框与日期、时间控件相互替换赋值(解决方案)
VB6.0中,日期.时间控件不允许为空时,采用文本框与日期.时间控件相互替换赋值,或许是一个不错的选择. 实现效果如下图: 文本框txtStopTime1 时间框DTStopTime1(DTPicke ...
- [WPF]ComboBox.Items为空时,点击不显示下拉列表
ComboBox.Items为空时,点击后会显示空下拉列表: ComboBox点击显示下拉列表,大概原理为: ComboBox存在ToggleButton控件,默认ToggleButton.IsChe ...
- esayUi中datagrid中json串为空时,显示上一次数据的解决方法
function initSearchProject(startDate,finishDate,flag) { $("#finishDate").val(finish ...
- easyUI draggable插件使用不当,导致拖动div内部文本框无法输入;设置echarts数据为空时就显示空白,不要动画和文字
先上一个Demo <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://ww ...
- IE9或以上的浏览器flash值为空时,导致domready不触发
在前些时间开发中遇到一个问题当flash值<param name="movie" value=""/>为空时,IE版本>=9不会触发domre ...
- 如何让listview列表为空时显示提示
先在布局文件中声明一个TextView,再设置listview.setEmptyView(TextView).这样当listview中的数据为空时就会列表的位置就会显示textviw中的提示.
随机推荐
- Linux系统 tcpdump 抓包命令使用教程
tcpdump 是Linux系统下的一个强大的命令,可以将网络中传送的数据包完全截获下来提供分析.它支持针对网络层.协议.主机.网络或端口的过滤,并提供and.or.not等逻辑语句来帮助你去掉无用的 ...
- shell内置字符串替换
shell变量赋值语法: 使用规则 解释单引号 所见即所得,即输出时会将单引号内的所有內容都原样输出,或者描述为单引号里面看到的是什么就会输出什么,这称为强引用双引号 (默认) 输出双引号内的所有内容 ...
- File was changed on disk
刚开始从eclipse转到idea,发现idea从svn同步代码后,点开一个java类报错 说是某个方法不存在,以为是别人代码没有提全,就点到别人代码里面去看,顶行出现"File was c ...
- 基于Xxl-Job,dataX设计的数据同步和可视化任务编排工具
使用vue3对xxl-job进行重构,并集成datax工具实现不同数据源的数据同步,支持glue模式,并新增存储过程调用,api任务调度和可视化任务编排,支持单任务-单任务串并联,单任务-任务集串并联 ...
- 使用 Visual Studio Code 进行调试
现在是时候实践你新获得的调试知识了. 我们刚好有一个完美的机会. 在我们的 Tailwind Traders 应用中,我们正在开发一项新功能:允许以多种货币显示产品的价格. 一位同事为这一目的编写了一 ...
- 论文解读 原苏木素A通过靶向ACSL4/FTH1轴依赖性铁凋亡保护阿霉素诱导的心肌损伤和心功能障碍
同学们,大家好!今天给大家介绍一篇研究性论文,原苏木素A通过靶向ACSL4/FTH1轴依赖性铁凋亡保护阿霉素诱导的心肌损伤和心功能障碍,想了解这方面的同学们可以重点关注一下.这篇文章是2024年7月份 ...
- linux 安装 Ollama 框架
概述 Ollama 是一款旨在简化大语言模型(LLM)本地部署的工具,支持 Windows.Linux 和 MacOS 系统.它提供了一个用户友好的环境,让开发者可以轻松地运行和调优如 Qwen.Ll ...
- Java常用的并发类-总结列表
一.java集合框架概述 java集合可分为Collection和Map两种体系,其中: 1.Collection接口:单列数据,定义了存取一组对象的方法的集合: List:元素有序.可重复的集合 S ...
- 单点登录-SSO原理
为什么需要单点登录 单点登录SSO(Single Sign On)说得简单点就是在一个多系统共存的环境下,用户在一处登录后,就不用在其他系统中登录,也就是用户的一次登录能得到其他所有系统的信任. 单点 ...
- Python生成成绩报告单:从理论到实践
在教育信息化日益普及的今天,自动化生成和处理学生成绩报告单已成为学校和教育机构的一项重要任务.Python作为一种功能强大且易于学习的编程语言,非常适合用于这种数据处理和报告生成任务.本文将详细介绍如 ...