Swagger Autogen Java Client中的DateTimeParseException

时间:2018-03-03 18:34:18

标签: java gson swagger iso

我有一个来自Swagger文件的自动生成的Java客户端,用于服务的API。我将Swagger文件放在Swagger编辑器中并下载了Java客户端,然后将其安装到我当地的maven repo中,然后我将其放入我的maven项目中使用。 (Swagger SOP到目前为止。)

我的所有请求都正常工作,直到我对包含ISO日期的对象执行get请求而没有指示UTC的Z(例如capabilities = ChoiceArrayField(base_field=models.CharField(max_length=64, choices=PEER_CAPS, blank=True, null=True), default=list, blank=True, null=True) 不起作用,但2018-02-07T21:23:37.177有效)。

我得到的例外是:

  

org.threeten.bp.format.DateTimeParseException:Text   '2018-02-07T21:23:37.177'无法在索引23处解析

这发生在Gson.java类(gson 2.8.1)中,该类与自动生成的swagger客户端一起打包,在2017-07-18T03:41:57.427Z方法尝试反序列化日期时。我走过了三个fromJson,看起来它解析好了,然后当它解开它的解析位置时,它会突然将位置设置为DateTimeFormatterBuilder并添加错误位置,从而引发错误。

我想知道其中一个是否可能是原因,或者这是否给了任何人一些洞察力的想法:

  • 日期本身,似乎符合ISO标准
  • 服务的Swagger文件,该服务如何描述其API(模型的日期字段似乎正常,-24format: date-time
  • Swagger的自动生成客户端
  • GSON库(v2.8.1)自动生成的Swagger代码依赖于
  • 三个库(v1.3.5)自动生成的Swagger代码依赖于

0 个答案:

没有答案