首页 > 解决方案 > 如何在 kotlin 客户端的 openapi-generator 中自定义 OffsetDateTime 序列化格式

问题描述

我正在尝试在 openapi-generator 中为 kotlin 客户端自定义OffsetDateTime序列化格式。对于使用 http okhttp3 库,它在 Spring Boot 上下文中工作。

我想为OffsetDateTime类发送具有ISO_INSTANT格式的api 请求,而不是我有ISO_OFFSET_DATE_TIME格式并从远程 api 得到错误。

这是生成器的配置:

openApiGenerate {
    generatorName.set("kotlin")

    inputSpec.set(spec)
    outputDir.set(generatedSourcesDir)

    apiPackage.set("importer.api")
    invokerPackage.set("importer.invoker")
    modelPackage.set("importer.model")

    configOptions.set(mapOf(
        "dateLibrary" to "java8",
        "serializationLibrary" to "jackson",
        "serializableModel" to "true",
        "enumPropertyNaming" to "UPPERCASE",
        "modelMutable" to "true"
    ))
}

这里的问题是在生成的请求类中我无法注释字段以指定格式。因此,我尝试为我的班级指定自定义序列化程序,但无法正常工作。令我困惑的是如何在生成的代码中实现对象映射器的检索:

package org.openapitools.client.infrastructure

import .....

object Serializer {
    @JvmStatic
    val jacksonObjectMapper: ObjectMapper = jacksonObjectMapper()
        .registerModule(Jdk8Module())
        .registerModule(JavaTimeModule())
        .setSerializationInclusion(JsonInclude.Include.NON_ABSENT)
        .configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false)
}

由于它是静态方法,因此没有空间来自定义对象映射器参数。很可能我在这里错过了,任何帮助将不胜感激。

标签: kotlindatetime-formatopenapi-generator

解决方案


推荐阅读