【发布时间】:2014-12-16 19:22:54
【问题描述】:
我目前使用的 api 以“yyyy-MM-dd”的形式和典型的 ISO8601 格式“2012-06-”返回日期(为了这个问题,日期和日期时间是相同的) 08T12:27:29.000-04:00"
您如何“干净地”设置 GSON 来处理这个问题?或者我最好的方法是将日期视为字符串并在我的模型对象中使用一些自定义 getter 以所需的特定形式输出?
我目前正在执行以下操作,但每当我看到“yyyy-MM-dd”字段时解析都会失败。
return new GsonBuilder()
.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
.setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ")
.create();
我最终会在 Android + Retrofit 环境中使用它,以防有可用的解决方案。
编辑:根据下面的建议,我创建了一个自定义 TypeAdapter。我的完整解决方案可以在这里看到(作为要点):https://gist.github.com/loeschg/2967da6c2029ca215258。
【问题讨论】:
-
你可能需要为 Date 注册一个自定义的 TypeAdapter,它将尝试各种格式。
标签: java android date gson retrofit