Android 如何从Google Firebase反序列化ISO 8601日期时间? TL;博士
如何将带有字符串datetime字段的POJO迁移到Google Firebase数据库,从而允许自动反序列化 描述 使用以下POJO编写: 根据,仅使用GSON和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
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));