jackson 在使用kotlin-spring OpenApi生成器生成客户端时,如何为@JsonProperty注解设置自定义值?

brgchamk  于 2022-11-08  发布在  Kotlin
关注(0)|答案(1)|浏览(134)

我正在使用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"
        )
    )
}
xyhw6mcr

xyhw6mcr1#

如果您想要注解

@field:JsonProperty

您需要在build.gradle.kts中修改configOptions以

mapOf(
    "dateLibrary" to "java8",
    "serializationLibrary" to "jackson" 
)

可以在https://github.com/OpenAPITools/openapi-generator/blob/master/docs/generators/java.md上找到更多此类配置值

相关问题