尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

swagger-codegen 生成模型 ArrayOfNumberOnly 详解:从 OpenAPI 数组定义到 okhttp4-gson 客户端 BigDecimal 列表

发布时间:2026/9/25 3:36:47

资讯中心
01
ARTICLE

swagger-codegen 生成模型 ArrayOfNumberOnly 详解:从 OpenAPI 数组定义到 okhttp4-gson 客户端 BigDecimal 列表

swagger-codegen 生成模型 ArrayOfNumberOnly 详解:从 OpenAPI 数组定义到 okhttp4-gson 客户端 BigDecimal 列表
开发工具代码生成API设计【免费下载链接】swagger-codegenswagger-codegen contains a template-driven engine to generate documentation, API clients and server stubs in different languages by parsing your OpenAPI / Swagger definition.项目地址https://gitcode.com/gh_mirrors/sw/swagger-codegen点击查看免费下载导读ArrayOfNumberOnly 是 swagger-codegen 基于 OpenAPI / Swagger 定义自动生成的一个纯数字数组模型它在 OpenAPI 规范中只包含一个number类型的数组字段在生成的 Java 客户端okhttp4-gson中对应一个ListBigDecimal属性。本文以该模型为切片完整讲解 Swagger/OpenAPI 二维数组定义如何被 swagger-codegen 解析、映射为 Java 泛型、生成模型文档与配套的序列化代码并给出可直接运行的构建与集成方法。模型文档原文速览关联文档 ArrayOfNumberOnly.md 是生成客户端中每个模型都会自动产出的标准 API 参考页核心内容如下属性名类型描述备注arrayNumberListBigDecimal—optional从表格可见swagger-codegen 生成的模型文档具有固定结构Name属性名、Type映射后的 Java 类型并链接到对应类型的文档页、Description取自 OpenAPI 定义的描述字段、Notes标注可选性等约束。该模型只有一个可选字段因此Notes列标记为[optional]。说明BigDecimal.md为 swagger-codegen 运行时按需生成的链接目标属于生成产物的一部分同一 docs 目录下还存在 NumberOnly.md、ArrayOfArrayOfNumberOnly.md 等同类文档可对照阅读。OpenAPI 源定义模型从何而来ArrayOfNumberOnly 不是手写的 Java 类而是由 swagger-codegen 从 OpenAPI 规范文件解析生成。其源定义位于测试桩规格 petstorefake.yamlArrayOfNumberOnly: type: object properties: ArrayNumber: type: array items: type: number逐行拆解这条定义ArrayOfNumberOnly模型名最终成为 Java 类名ArrayOfNumberOnlytype: object声明这是一个对象模型对应生成 Java 类ArrayNumber属性名对应 Java 字段arrayNumber见下文命名规则type: array声明该属性是数组items.type: number声明数组元素为number类型在 Java 侧映射为BigDecimal。同一规格文件中紧随其后还定义了 ArrayOfArrayOfNumberOnly将items再嵌套一层type: array用于验证二维数组ListListBigDecimal的生成两个模型共同覆盖了 swagger-codegen 对一维、二维数字数组的处理能力。生成的 Java 模型字段、泛型与 JSON 序列化swagger-codegen 依据上述 YAML 生成了完整可编译的 Java 模型类 ArrayOfNumberOnly.java其核心实现要点如下。属性字段与 JSON 序列化注解SerializedName(ArrayNumber) private ListBigDecimal arrayNumber null;SerializedName(ArrayNumber)指定 JSON 序列化/反序列化时的字段名严格保持与 OpenAPI 定义中的ArrayNumber一致避免 Gson 默认驼峰转换导致字段名失配字段类型为ListBigDecimal即number数组元素映射为java.math.BigDecimalokhttp4-gson 客户端使用 Gson 作为 JSON 库见类头 importcom.google.gson.annotations.SerializedName、com.google.gson.TypeAdapter等初始值为null与文档中标注的[optional]语义一致——该字段可选未赋值时 JSON 中不输出该键。链式 setter 与追加方法模型类为字段同时提供两种写入方式public ArrayOfNumberOnly arrayNumber(ListBigDecimal arrayNumber) { this.arrayNumber arrayNumber; return this; } public ArrayOfNumberOnly addArrayNumberItem(BigDecimal arrayNumberItem) { if (this.arrayNumber null) { this.arrayNumber new ArrayListBigDecimal(); } this.arrayNumber.add(arrayNumberItem); return this; }arrayNumber(...)返回this支持链式调用fluent API方便一行内完成模型构建addArrayNumberItem(...)负责懒初始化ArrayList后逐个追加元素适合以流式方式向数组填充数据。取值方法、equals/hashCode 与 toStringpublic ListBigDecimal getArrayNumber() { return arrayNumber; } public void setArrayNumber(ListBigDecimal arrayNumber) { this.arrayNumber arrayNumber; }getArrayNumber()标注了ApiModelProperty(value )是 swagger-annotations 在生成模型上附加的自描述注解equals/hashCode基于Objects.equals/Objects.hash仅比较arrayNumber字段便于断言与集合操作toString()输出class ArrayOfNumberOnly { arrayNumber: ... }格式配合私有toIndentedString对多行字符串做 4 空格缩进保证日志可读性。类型映射规则number → BigDecimal该模型的关键映射关系是 OpenAPInumber类型到 JavaBigDecimal。这一映射由 swagger-codegen 的类型解析机制决定可以从以下角度理解BigDecimal提供任意精度的十进制运算适合承载 OpenAPI 规范中未限定整数/浮点边界的number类型避免浮点精度丢失数组维度直接体现为 Java 泛型嵌套一维array映射为ListBigDecimal二维array映射为ListListBigDecimal对应 ArrayOfArrayOfNumberOnly.java若 OpenAPI 定义为integer类型则通常映射为Integer/Longnumber与integer在 Java 侧分属不同映射分支。在 okhttp4-gson 客户端中BigDecimal的序列化由 Gson 内置处理模型类头部引用的JsonAdapter、TypeAdapter、JsonReader/JsonWritercom.google.gson.stream包表明该生成器还具备为特殊类型输出自定义 TypeAdapter 的能力BigDecimal这类标准类型则走 Gson 默认适配。构建、运行与集成实践编译生成客户端ArrayOfNumberOnly 所在的 okhttp4-gson 客户端是标准 Maven 工程仓库根目录pom.xml为多模块父 POM客户端自身的构建文件位于 samples/client/petstore/java/okhttp4-gson/pom.xml同时提供 Gradle 包装器gradlew/gradlew.bat与 gradle.properties。典型构建方式mvn compile # 或使用仓库自带的 Gradle 包装器 ./gradlew build构建产物会包含io.swagger.client.model.ArrayOfNumberOnly类可直接作为依赖加入业务工程。在代码中使用 ArrayOfNumberOnly结合上文 API一段可运行的使用示例import io.swagger.client.model.ArrayOfNumberOnly; import java.math.BigDecimal; ArrayOfNumberOnly model new ArrayOfNumberOnly() .addArrayNumberItem(new BigDecimal(3.14159)) .addArrayNumberItem(new BigDecimal(2.71828)); // 读取整个列表 ListBigDecimal numbers model.getArrayNumber();若需一次性整体赋值ListBigDecimal list new ArrayList(); list.add(new BigDecimal(100.5)); model.setArrayNumber(list);关联的测试用例虽然本客户端测试目录中暂无针对 ArrayOfNumberOnly 的独立测试但 FakeApiTest.java 中大量使用了BigDecimal参数如fakeOuterNumberSerialize、fakeOuterNumber等接口调用验证了该客户端对BigDecimal编解码的整体可用性可作为number类型在请求/响应链路上正确工作的佐证。与同级模型文档的关系生成文档目录 samples/client/petstore/java/okhttp4-gson/docs 下每个模型对应一份同名.md文档结构完全一致。与 ArrayOfNumberOnly 相关度最高的两份为NumberOnly.md单个number字段模型对应源定义中的NumberOnlyproperties.JustNumber: type: number帮助理解单数字与数字数组在文档与代码两端的差异ArrayOfArrayOfNumberOnly.md二维数字数组模型属性类型为ListListBigDecimal与本文模型互为嵌套对照构成 swagger-codegen 处理数字数组的完整样例链。这三份文档连同对应源码ArrayOfNumberOnly.java、ArrayOfArrayOfNumberOnly.java一起可以作为学习 swagger-codegen 模型生成机制的最小闭环示例。小结ArrayOfNumberOnly 虽是一个仅含单个可选数组字段的简单模型却完整串联了 swagger-codegen 的整条生成链路OpenAPI 源定义type: arrayitems.type: number→ 类型解析number→BigDecimal→ Java 模型生成字段、链式 setter、Gson 注解、equals/toString→ 模型文档自动生成属性表 类型链接。理解这一链路后任何包含数字数组或嵌套数字数组字段的 OpenAPI 模型都能在阅读生成文档的同时在源码中准确预测其字段名、泛型类型与可用 API 形态。赞分享开发工具代码生成API设计【免费下载链接】swagger-codegenswagger-codegen contains a template-driven engine to generate documentation, API clients and server stubs in different languages by parsing your OpenAPI / Swagger definition.项目地址https://gitcode.com/gh_mirrors/sw/swagger-codegen点击查看免费下载相关推荐CANN Ascend C SIMD寄存器加载APIasc_loadalign_brc_elem2datablock_postupdate 产品支持情况 ! npu950 id1 Ascend 950PR开发工具代码生成API设计swagger-codegen 生成的 ArrayOfNumberOnly 模型从 OpenAPI 数字数组定义到多语言客户端类swagger codegen 生成的 ArrayOfNumberOnly 模型从 OpenAPI 数字数组定义到多语言客户端类 导读 ArrayOfNumb开发工具代码生成API设计swagger-codegen Go 客户端模型解析从 OpenAPI 定义到 ArrayOfNumberOnly 的生成与序列化swagger codegen Go 客户端模型解析从 OpenAPI 定义到 ArrayOfNumberOnly 的生成与序列化 ArrayOfNumber开发工具代码生成API设计上一篇OpenAgent数据集管理终极指南文档上传、语义检索与知识库构建下一篇.NET工作流终极指南elsa-core EF Core与MongoDB数据库集成配置创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。