我正在使用openapi-generator:5.4.0和kotlin-spring生成器从Open API规范(3.0.0)生成一个API客户端。
为模型生成的数据类具有@JsonProperty注解。注解的值与属性的名称相同。我希望注解和属性名称具有不同的值。
这是因为这些规范代表了一个第三方API,它没有为它的属性使用有意义的名称。我想为属性设置描述性的名称,并在@JsonProperty注解中使用第三方的名称。这样,当我使用这些模型进行API调用时,Json解析不会失败。
有什么办法可以做到这一点吗?
这里有一个
样品规格:link to full spec
components:
schemas:
Pet:
required:
- id
- name
properties:
id:
type: integer
format: int64
name:
type: string
tag:
type: string
生成的数据类:
data class Pet(
@field:JsonProperty("id", required = true) val id: kotlin.Long,
@field:JsonProperty("name", required = true) val name: kotlin.String,
@field:JsonProperty("tag") val tag: kotlin.String? = null
) {
}
和构建.gradle.kts文件:
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
import org.openapitools.generator.gradle.plugin.tasks.GenerateTask
plugins {
kotlin("jvm") version "1.6.20"
id("org.openapi.generator") version "5.3.0"
application
}
group = "io.codextor"
version = "1.0-SNAPSHOT"
repositories {
mavenCentral()
}
dependencies {
implementation("org.openapitools:openapi-generator:5.4.0")
testImplementation(kotlin("test"))
}
tasks.test {
useJUnitPlatform()
}
tasks.withType<KotlinCompile> {
kotlinOptions.jvmTarget = "1.8"
}
application {
mainClass.set("MainKt")
}
tasks.withType<GenerateTask> {
generatorName.set("kotlin-spring")
inputSpec.set("$rootDir/specs/petstore-v3.0.yaml")
outputDir.set("$buildDir/generated")
apiPackage.set("org.openapi.example.api")
invokerPackage.set("org.openapi.example.invoker")
modelPackage.set("org.openapi.example.model")
configOptions.set(
mapOf(
"dateLibrary" to "java8"
)
)
}
1条答案
按热度按时间xyhw6mcr1#
如果您想要注解
您需要在build.gradle.kts中修改configOptions以
可以在https://github.com/OpenAPITools/openapi-generator/blob/master/docs/generators/java.md上找到更多此类配置值