Android 如何从Google Firebase反序列化ISO 8601日期时间? TL;博士

Android 如何从Google Firebase反序列化ISO 8601日期时间? TL;博士,android,firebase,firebase-realtime-database,jackson,gson,Android,Firebase,Firebase Realtime Database,Jackson,Gson,如何将带有字符串datetime字段的POJO迁移到Google Firebase数据库,从而允许自动反序列化 描述 使用以下POJO编写: 根据,仅使用GSON和ChatMessage的外观如下: public class ChatMessage { public String name; public String message; public Date createdAt; public Date updatedAt; @Exclude

如何将带有字符串datetime字段的POJO迁移到Google Firebase数据库,从而允许自动反序列化

描述 使用以下POJO编写:

根据,仅使用GSON和
ChatMessage
的外观如下:

public class ChatMessage {

    public String name;
    public String message;

    public Date createdAt;
    public Date updatedAt;

    @Exclude
    public String ignoreThisField;
}
我已经看到了使用的解决方案,但它需要重写几十个对象。

基于,我创建了一个
映射器
类,该类自动反序列化为
日期

public class Mapper {

    private static Gson GSON = new GsonBuilder()
            .setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
            .create();

    public static <T> T fromJson(Object object, Class<T> type) {
        String jsonString = GSON.toJson((HashMap<String, JSONObject>) object);
        return GSON.fromJson(jsonString, type);
    }

    public static String toJson(Object object) {
        return GSON.toJson(object);
    }

}
基于,我创建了一个
Mapper
类,该类自动反序列化为
Date

public class Mapper {

    private static Gson GSON = new GsonBuilder()
            .setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
            .create();

    public static <T> T fromJson(Object object, Class<T> type) {
        String jsonString = GSON.toJson((HashMap<String, JSONObject>) object);
        return GSON.fromJson(jsonString, type);
    }

    public static String toJson(Object object) {
        return GSON.toJson(object);
    }

}
ChatMessage msg = Mapper.fromJson(dataSnapshot.getValue(), ChatMessage.class);
Timber.d(Mapper.toJson(msg));