Joã*_*lha 5 json date-formatting swagger swagger-codegen localdatetime
我有一个无法更改的 swagger.json 规范。我正在使用swagger-codegen从 swagger.json 创建一个库,如下所示:
$ java -jar swagger-codegen-cli.jar generate -i swagger.json -l java -o .
Run Code Online (Sandbox Code Playgroud)
问题是在我的 swagger.json 中,一些格式被声明为date-time并且 codegen 将它们转换为OffsetDateTime类类型...但是我的服务请求的响应以 LocalDateTime 的形式出现,如下所示
{....,
"expirationDeadline": "2022-04-22T10:36:13.383",
....}
Run Code Online (Sandbox Code Playgroud)
因此,当我使用该库并尝试反序列化包含2022-04-22T10:36:13.383我的类的 JSONObject 时,它会失败,因为它无法转换2022-04-22T10:36:13.383为OffsetDateTime.
最终,经过一番搜索后,我遵循了类似这样的其他一些线程,并设法将OffsetDateTime类型更改为LocalDateTime使用导入和类型映射,如下所示:
$ java -jar swagger-codegen-cli.jar generate \
-i updated-swagger.json \
-l java \
-o ./java-client-swagger-codegen/ \
--import-mappings org.threeten.bp.OffsetDateTime=org.threeten.bp.LocalDate \
--type-mappings OffsetDateTime=LocalDate
Run Code Online (Sandbox Code Playgroud)
但现在的问题是,swagger-codegen只使用OffsetDateTimeTypeAdaper、和创建 JSON 类DateTypeAdapter,如下所示:LocalDateTypeAdapterSqlDateTypeAdapter
因此,现在每当我尝试反序列化包含 LocalDateTime 格式的日期的对象时,我最终都会收到此错误:
serialize json java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 at $.expirationDeadline
Run Code Online (Sandbox Code Playgroud)
date-time格式转换为OffsetDateTime,然后手动更改"expirationDeadline": "2022-04-22T10:36:13.383"为"expirationDeadline": "2022-04-22T10:36:13.383+01:00",它工作正常。date-time格式转换为LocalDate然后手动组合"expirationDeadline": "2022-04-22T10:36:13.383","expirationDeadline": "2022-04-22"效果很好。LocalDateTimeTypeAdapter只是从其他适配器复制逻辑,现在它可以工作了,我可以将预期格式转换为LocalDateTime格式!不幸的是,我无法更改此格式,因此我认为我需要一种方法来在运行命令时swagger codegen生成此格式。LocalDateTimeTypeAdapter为了实现这一目标,我可以向我的指挥提出任何论据吗?谁能帮我?
小智 1
不知道您是否找到了问题的解决方案或其他解决方法,但对我有用的是在生成客户端时使用另一个库,这样 JSON 的解析将使用 Jackson 而不是 GSON 来完成。
https://github.com/swagger-api/swagger-codegen#customizing-the-generator
在客户端生成脚本中,您应该添加以下参数以使用 feign 库:
--library feign
Run Code Online (Sandbox Code Playgroud)
如果有人在这里使用 OpenAPI 生成器遇到同样的问题,解决方案本质上是相同的 - 您应该使用其他一些库来使用 Jackson 解析器: https: //openapi-generator.tech/docs/generators /java/
| 归档时间: |
|
| 查看次数: |
2789 次 |
| 最近记录: |