Java 使用具有多种日期时间格式的Swagger API

Java 使用具有多种日期时间格式的Swagger API,java,swagger,Java,Swagger,我使用的API超出了我的控制范围,使用的是Swagger codegen CLI Jar版本2.3.1和java8date library选项,语言也是Java API中有几个datetime字段,所有字段的定义如下: "type": "string", "format": "date-time" 大多数值包括时区,但有一个值不包括。因此,我们在以相同方式定义的字段中获取这两种格式: "1963-08-15T23:59:59+02:00" "1963-08-15T23:59:59" 这会导致

我使用的API超出了我的控制范围,使用的是Swagger codegen CLI Jar版本2.3.1和
java8
date library选项,语言也是Java

API中有几个datetime字段,所有字段的定义如下:

"type": "string",
"format": "date-time"
大多数值包括时区,但有一个值不包括。因此,我们在以相同方式定义的字段中获取这两种格式:

"1963-08-15T23:59:59+02:00"
"1963-08-15T23:59:59"
这会导致反序列化程序出现问题,因为它永远不知道要处理什么格式

我在生成的DTO类中使用了
OffsetDateTime
,因为
LocalDateTime
不起作用-生成的代码不包含Gson适配器(请参阅)

我尝试过为反序列化程序设置不同格式的格式化程序,但不起作用,主要是因为上面的第二种格式排除了区域信息:

ApiClient apiClient = new ApiClient();
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss[xxx]");
apiClient.setOffsetDateTimeFormat(dtf);
我希望不要对生成的代码进行太多的编辑,因为我希望将来能够重新生成,并且我不能更改API返回的值,因为它是外部的


是否有方法告诉生成的客户端将不同格式反序列化为
OffsetDateTime
,或者将时区默认为某个特定的值?

我通过编辑生成的
JSON.java
文件并将
OffsetDateTimeTypeAdapter
类更改为在
read
method:

return ZonedDateTime.parse(date, formatter).toOffsetDateTime();
然后我将
JSON.java
文件添加到
.swagger codegen ignore
文件中。我怀疑那个文件会经常更改