首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Kotlin客户端生成器支持Enum未知值

Kotlin客户端生成器支持Enum未知值
EN

Stack Overflow用户
提问于 2022-07-21 16:38:44
回答 1查看 241关注 0票数 0

我想知道是否有一种方法可以从openapi规范生成一个kotlin库,如果它不序列化已知的枚举值,它将支持默认值。

例: Java生成器在其enumUnknownDefaultCase中有等级库标志

kotlin生成器中的Ref似乎读取moshi序列化程序这里的配置。

但是无法通过kotlin生成器指定以下两个选项来实现此功能:

代码语言:javascript
运行
复制
"moshiCodeGen": "true"
"enumUnknownDefaultCase": "true"

相关谈话

谢谢你的帮助,找出如何让kotlin客户端不要在新的枚举值上爆炸。

EN

回答 1

Stack Overflow用户

发布于 2022-07-26 03:32:21

如果使用openapi-generator-cli生成代码,则选项enumUnknownDefaultCase应该通过添加--additional-properties=enumUnknownDefaultCase=true来工作。

示例:

代码语言:javascript
运行
复制
java -jar openapi-generator-cli-6.0.0.jar -i "example.com/swagger?format=openapi" -g kotlin --library=jwm-retrofit2 -o my-api-sdk --additional-properties=enumUnknownDefaultCase=true

它将创建一个SerializerHelper类,它将向Moshi构建器添加额外的枚举适配器,如下所示

代码语言:javascript
运行
复制
moshiBuilder
  .add(MyEnum::class.java, EnumJsonAdapter.create(MyEnum::class.java).withUnknownFallback(MyEnum.unknown_default_open_api))
  .add(...)

但是它还没有完成,当初始化您的ApiClient时,您必须强制它与枚举适配器一起使用MoshiBuilder,默认情况下它不会使用那个适配器。

代码语言:javascript
运行
复制
Retrofit.Builder()
   .baseUrl(baseUrl)
   .addConverterFactory(ScalarsConverterFactory.create())
++ .addConverterFactory(MoshiConverterFactory.create(Serializer.moshi))
-- .addConverterFactory(MoshiConverterFactory.create(serializerBuilder.build()))
   .apply {
      if (converterFactory != null) {
         addConverterFactory(converterFactory)
      }
   }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73069818

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档