Retrofit GSON 将 Date 从 json 字符串序列化为 java.util.date

2022-08-31 11:19:20

我正在使用改造库进行 REST 调用。我所做的大部分工作都像黄油一样顺利,但由于某种原因,我在将JSON时间戳字符串转换为对象时遇到问题。传入的 JSON 如下所示。java.util.Date

{
    "date": "2013-07-16",
    "created_at": "2013-07-16T22:52:36Z",
} 

如何告诉Retrofit或Gson将这些字符串转换为?java.util.Date objects


答案 1
Gson gson = new GsonBuilder()
    .setDateFormat("yyyy-MM-dd'T'HH:mm:ss")
    .create();

RestAdapter restAdapter = new RestAdapter.Builder()
    .setEndpoint(API_BASE_URL)
    .setConverter(new GsonConverter.create(gson))
    .build();

或者 Kotlin 等效项:

val gson = GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ss").create()
RestAdapter restAdapter = Retrofit.Builder()
    .baseUrl(API_BASE_URL)
    .addConverterFactory(GsonConverterFactory.create(gson))
    .build()
    .create(T::class.java)

您可以将自定义的 Gson 解析器设置为改造。更多内容: 改造网站

看看Ondreju的回应,看看如何在改造2中实现这一点。


答案 2

@gderaco的答案更新为改造2.0:

Gson gson = new GsonBuilder()
.setDateFormat("yyyy-MM-dd'T'HH:mm:ss")
.create();

Retrofit retrofitAdapter = new Retrofit.Builder()
.baseUrl(API_BASE_URL)
.addConverterFactory(GsonConverterFactory.create(gson))
.build();