小编Joã*_*lha的帖子

将 swagger 格式:日期时间转换为 LocalDateTime.class

我有一个无法更改的 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.383OffsetDateTime.

最终,经过一番搜索后,我遵循了类似这样的其他一些线程,并设法将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

在此输入图像描述

因此,现在每当我尝试反序列化包含 …

json date-formatting swagger swagger-codegen localdatetime

5
推荐指数
1
解决办法
2789
查看次数